Age | Commit message (Collapse) | Author |
|
With the provided command I get this error from ./configure:
checking whether the C compiler works... no
configure: error: in `/home/brendan/sources/rt-app':
configure: error: C compiler cannot create executables
See `config.log' for more details
This seems to be because the "libs/" part is bogus.
|
|
"yield" event simply calls pthread_yield()
This has a special meaning for SCHED_DEADLINE tasks
|
|
It might be useful, for phases that contains multiple timer events, to
accumulate intermediate slack and report this number once the phase
completes. Implement such behaviour and introduce a global option to
select between current behaivour and the new one.
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Implement "relative" (current behavior) and "absolute" working modes for
timer events. Text added in doc/tutorial.txt gives more information
about the two modes.
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add a new thread property called 'delay' with which the initial starting
time of a thread can be delayed. Parameter is expressed in usec.
Usage is:
"tasks" : {
"thread0" : {
...
"delay" : 1000000,
...
}
}
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add descrition for newly introduced log header fiels (slack, c_duration,
c_period and wu_lat).
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Convert thread logs header to fixed width spaces to improve readability
(of both logs and code).
Also, update cpufreq_governor_efficiency script accordingly.
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add detailed example for static cross-compile of rt-app.
Signed-off-by: Juri Lelli <juri.lelli@arm.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
The runtime event emulates the execution of a load for a specific amount
of time irrespective of the compute capacity of the CPU it is run on or
the frequency.
Signed-off-by: Javi Merino <javi.merino@arm.com>
|
|
update cpufreq governor efficiency bench to :
- use timer instead of sleep to have a better load emulation
- track overrun : run duration exceeds period
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
rt-app considers all key starting by "run" in the "phases" object as a run
event. But rt-app also allows to not create a "phases" object if there is only
one phase. In this latter case, the events are directly put at the "thread"
object level where the deadline parameters are also set. In such configuration,
the "runtime" key that is used for the runtime parameter of a deadline thread
is also filtered as a "run" event whereas it should not.
In order to remove any potential mix between deadline parameters and events,
we rename the deadline parameters in the .json file: "dl-period",
"dl-deadline", "dl-runtime".
For backward compatibility reason, rt-app will continue to check the presence
of "period", "deadline" and "runtime" keys at the thread level iff new keys
have not been found.
"dl-period", "dl-runtime" and "dl-deadline" are used by to set sched_setattr's
paramters which use nanosecond unit. All other rt-app parameters uses
microsecond unit which makes the description of a deadline thread quite
confusing as described in the example below:
"thread0" : {
"policy" : "SCHED_DEADLINE",
"dl-period" : 100000000,
"dl-deadline" : 20000000,
"dl-runtime" : 10000000,
"run" : 10000,
"timer" : { "ref" : "unique", "period" : 100000 }
},
In addition, deadline scheduler doesn't accept a runtime smaller than 1 usec
(at least in the v4.3 kernel). So we can align all the parameters of the json
file to usec unit in order to have consistant values in the description of a
thread.
The usec unit only applies to "dl-period", "dl-runtime" and "dl-deadline" but
"period", "deadline" and "runtime" still use ns to keep backward
compatibility.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add a How to cross-compile rt-app with static linkage
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add 2 new kind of event for running a memory or a io bounded load.
"mem" name for a load is memory bounded, and "iorun" name for a load is
io bounded. The default file to be written to create the load is
/dev/null and the device/file could be specified with "io_device" key in
"global" section. The size of per-thread memory buffer to create
IO/memory load could also be specified with "mem_buffer_size" in the
same section.
Signed-off-by: Pi-Cheng Chen <pi-cheng.chen@linaro.org>
[ replace Text by String in tutorial.txt]
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
-Several minor fixes in the tutorial file
-Remove some compilation warnings
-Reorder and gather the init of data by feature
-Close the log file before exiting the thread body
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
With the new mechanism that is used to describe a scenario, it becomes more
complex to estimate how many logs will be generated during the execution of a
use case. As a result, the record of the logs in temporary buffer had been
disable and the logs were saved directly in files. The potential side effect
of such mecanism is to block threads on io access, which disturbs the use case
behavior.
A new parameter is added to define the saving policy of the logs. You can
now disable the logs, save them directly in a file like previously,
define the size of a temporary buffer but with the risk to lost some logs if
the buffer overflow. You can also ask rt-app to evaluate how many logs will be
generated and allocate the temporary buffer accordingly. This last mode is not
yet implemented and it will be part of a dedicated patch.
Full details of the new parameter is available in the update of the
documentation
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Update the spreading-tasks.json example in order to test all possible
transition sequence between light and heavy loads of 2 threads.
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add the capability to modify the duration value of json file with tune_json.py
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Tested by: Leo Yan <leo.yan@linaro.org>
|
|
Align the comment and values of examples files
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add video playback use cases
Signed-off-by: Pi-Cheng Chen <pi-cheng.chen@linaro.org>
[Remove change between version in the commit message]
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
DVFS adds a latency in the execution of task because of the time to
decide to move at max freq. We need to measure this latency and check
that the governor stays in an acceptable range.
When rt-app runs a json file, a log file is created for each thread.
This log file records the number of loop that has been executed and
the duration for executing these loops (per phase). We can use these
figures to evaluate to latency that is added by a cpufreq governor
and its "performance efficiency".
We use the run+sleep pattern to do the measurement, for the run time per
loop, the performance governor should run the expected duration as the
CPU stays a max freq. At the opposite, the powersave governor will give
use the longest duration (as it stays at lowest OPP). Other governor will
be somewhere between the 2 previous duration as they will use several OPP
and will go back to max frequency after a defined duration which depends
on its monitoring period.
The formula:
duration of powersave gov - duration of the gov
-------------------------------------------------------- x 100%
duration of powersave gov - duration of performance gov
will give the efficiency of the governor. 100% means as efficient as
the perf governor and 0% means as efficient as the powersave governor.
This patch offers json files and shell scripts to do the measurement.
Usage:
./calibration.sh <cpu>
cpu: cpu number on which you want to run the test
./test.sh <governor> <cpu> <runtime> <sleeptime> [<loops>]
governor: target CPUFreq governor you want to test
cpu: cpu number on which you want to run the test. Be the same
as the one passed to "calibration.sh".
runtime: running time in ms per loop of the workload pattern
sleeptime: sleeping time in ms per loop of the workload pattern
loops: repeat times of the workload pattern. default: 10
Example:
"./calibration.sh 0" means to calculate the computing capacity of CPU0 which
will be used in the following test.
"./test.sh ondemand 0 100 100 20" means to
test "ondemand" on CPU0 with workload pattern "run 100ms + sleep 100ms"(20 loops).
NOTE:
- Make sure there are "sed", "cut", "grep", "rt-app", etc tools on
your test machine, and run the scripts under root privilege.
- Run the test while the system is idle.
- You can change the target governor's parameters after running "calibration.sh",
but before "test.sh".
Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
|
|
add a temple.json file taht can be used by tune_json.py to create use cases
with various type a load
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
remove useless comma in order to comply with json rules
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
This scripts strips all comments in the input JSON file, modifies the
parameters according to command line arguments, and write the content
to a new JSON file.
changes from v1:
- use us instead of ms as units of period/run/sleep
Signed-off-by: pi-cheng.chen <pi-cheng.chen@linaro.org>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Add new spreading-tasks.json in doc/examples.
It create 2 threads made of a 1st phase with small load
(10% as an example) followed by a phase with a large load
(70% as an example). Each phase lasts 6sec to let system
stabilize.
Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
describe the grammar used to emulate a use case
change since v1:
- fix typo
- add details for lock_pages parameter
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Update the example to be aligned wit the tutorial document
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
don't add a trailing comma while adding the value of a suspend key
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
create 2 version of json use case files. The files that are suffixed by
"-short" are 6sec long whereas the ones suffixed by "-long" are 600sec long.
The long files are targeted to be used for non reg tests whereas the short
files mainly targets dev
|
|
The AudioTick emulates the periodic interrupt that fills the pcm fifo.
Pinned AudioTick thread onto CPU0 as the latter is used by default to
handle interruption on the ARM platform.
|
|
Move examples files in a tutorial dir as they are describing how to use the
grammar of workgen.
Rename test.json into example5.json
|
|
when we instantiate a thread which contains timer events, the same
timers will be used for all instances and the instance will be woken up
sequentially.
Create a special value named "unique" for the "ref" key of timer. During
the creation of the event, the timer ref value will be replaced by a unique
value so each instance will use its own timer instead of sharing the same timer
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
add instance parameter in exaple2 so it can be found and modified by
script
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Fix all trailing commas in /doc/examples/* so that those JSON file could be
tuned by tune_json.py script. A trailing comma in mp3.json needs to be removed
manually since it's added by workgen script when adding suspend key.
Signed-off-by: Pi-Cheng Chen <pi-cheng.chen@linaro.org>
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
|
|
The dry run option "-d" only generates a output json file and doesn't call
rt-app. The output file can be then used with rt-app
Typical use should be:
workgen -d -o <output file> <input file>
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
|
|
|
|
|
|
|
|
check unique key in the json file and call rt-app with the output file
|
|
|
|
|
|
so libjson will not remove the duplicated events
|
|
Conflicts:
doc/examples/mp3.json
|
|
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
doc/examples/example2.json
2 thread wake up periodically with different periods and runtimes
but share access to a critical resource
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
doc/examples/example1.json
2 thread wake up periodically with different periods and runtimes
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|
|
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
|