diff options
-rw-r--r-- | README.md | 34 |
1 files changed, 17 insertions, 17 deletions
@@ -191,7 +191,7 @@ $ echo "{'uname': r'.*litmus.*'}" > params.py | |||
191 | # run_exps.py will now succeed | 191 | # run_exps.py will now succeed |
192 | ``` | 192 | ``` |
193 | 193 | ||
194 | The second property is kernel configuration options. These assume the configuration is stored at `/boot/config-$(uname -r)`. You can specify these in `params.py` like so: | 194 | The second property is kernel configuration options. These assume the configuration is stored at `/boot/config-$(uname -r)`. You can specify these in `params.py`. In the following example, the experiment will only run on an ARM system with the release master enabled: |
195 | 195 | ||
196 | ```python | 196 | ```python |
197 | {'config-options':{ | 197 | {'config-options':{ |
@@ -204,13 +204,13 @@ The second property is kernel configuration options. These assume the configurat | |||
204 | ## gen_exps.py | 204 | ## gen_exps.py |
205 | *Usage*: `gen_exps.py [options] [files...] [generators...] [param=val[,val]...]` | 205 | *Usage*: `gen_exps.py [options] [files...] [generators...] [param=val[,val]...]` |
206 | 206 | ||
207 | *Output*: OUT_DIR/EXP_DIRS which each contain sched.py and params.py | 207 | *Output*: `OUT_DIR/EXP_DIRS` which each contain `sched.py` and `params.py` |
208 | 208 | ||
209 | *Defaults*: `generators = G-EDF P-EDF C-EDF`, `OUT_DIR = exps/` | 209 | *Defaults*: `generators = G-EDF P-EDF C-EDF`, `OUT_DIR = exps/` |
210 | 210 | ||
211 | This script uses *generators*, one for each LITMUS scheduler supported, which each have different properties which can be varied to generate different types of schedules. Each of these properties has a default value which can be modified on the command line for quick and easy experiment generation. | 211 | This script uses *generators*, one for each LITMUS scheduler supported, which each have different properties which can be varied to generate different types of schedules. Each of these properties has a default value which can be modified on the command line for quick and easy experiment generation. |
212 | 212 | ||
213 | This script as written should be used to create debugging task sets, but not for creating task sets for experiments shown in papers. That is because the safety features of `run_exps.py` described above (uname, config-options) are not used here. If you are creating experiments for a paper, you should create your own generator which outputs values for the `config-options` required for your plugin so that you cannot ruin your experiments at run time. Trust me, you will. | 213 | This script as written should be used to create debugging task sets, but not for creating task sets for experiments shown in papers. That is because the safety features of `run_exps.py` described above (`uname`, `config-options`) are not used here. If you are creating experiments for a paper, you should create your own generator which outputs values for the `config-options` required for your plugin so that you cannot ruin your experiments at run time. Trust me, you will. |
214 | 214 | ||
215 | The `-l` option lists the supported generators which can be specified: | 215 | The `-l` option lists the supported generators which can be specified: |
216 | 216 | ||
@@ -289,22 +289,22 @@ sched=PSN-EDF_trial=0/ sched=PSN-EDF_trial=1/ sched=PSN-EDF_trial=2/ | |||
289 | sched=PSN-EDF_trial=3/ sched=PSN-EDF_trial=4/ | 289 | sched=PSN-EDF_trial=3/ sched=PSN-EDF_trial=4/ |
290 | ``` | 290 | ``` |
291 | 291 | ||
292 | IV. PARSE_EXPS | 292 | ## parse_exps.py |
293 | *Usage*: `parse_exps.py [options] [data_dir1] [data_dir2]...` | 293 | *Usage*: `parse_exps.py [options] [data_dir1] [data_dir2]...` |
294 | 294 | ||
295 | where data_dirs contain feather-trace and sched-trace data, e.g. `ft.bin`, `mysched.ft`, or `st-*.bin`. | 295 | where the `data_dirx` contain feather-trace and sched-trace data, e.g. `ft.bin`, `mysched.ft`, or `st-*.bin`. |
296 | 296 | ||
297 | *Output*: print out all parsed data or `OUT_FILE` where `OUT_FILE` is a python map of the data or `OUT_DIR/[FIELD]*/[PARAM]/[TYPE]/[TYPE]/[LINE].csv`, depending on input. | 297 | *Output*: print out all parsed data or `OUT_FILE` where `OUT_FILE` is a python map of the data or `OUT_DIR/[FIELD]*/[PARAM]/[TYPE]/[TYPE]/[LINE].csv`, depending on input. |
298 | 298 | ||
299 | The goal is to create csv files which record how varying PARAM changes the value of FIELD. Only PARAMs which vary are considered. | 299 | The goal is to create csv files which record how varying `PARAM` changes the value of `FIELD`. Only `PARAM`s which vary are considered. |
300 | 300 | ||
301 | FIELD is a parsed value, e.g. 'RELEASE' overhead or 'miss-ratio'. `PARAM` is a parameter which we are going to vary, e.g. 'tasks' A single `LINE` is created for every configuration of parameters other than `PARAM`. | 301 | `FIELD` is a parsed value, e.g. 'RELEASE' overhead or 'miss-ratio'. `PARAM` is a parameter which we are going to vary, e.g. 'tasks'. A single `LINE` is created for every configuration of parameters other than `PARAM`. |
302 | 302 | ||
303 | `TYPE is the type of measurement, i.e. Max, Min, Avg, or Var[iance]. The two types are used to differentiate between measurements across tasks in a single taskset, and measurements across all tasksets. E.g. `miss-ratio/*/Max/Avg` is the maximum of all the average miss ratios for each task set, while `miss-ratio/*/Avg/Max` is the average of the maximum miss ratios for each task set. | 303 | `TYPE` is the statistic of the measurement, i.e. Max, Min, Avg, or Var[iance]. The two types are used to differentiate between measurements across tasks in a single taskset, and measurements across all tasksets. E.g. `miss-ratio/*/Max/Avg` is the maximum of all the average miss ratios for each task set, while `miss-ratio/*/Avg/Max` is the average of the maximum miss ratios for each task set. |
304 | 304 | ||
305 | *Defaults*: `OUT_DIR, OUT_FILE = parse-data`, `data_dir1 = .` | 305 | *Defaults*: `OUT_DIR, OUT_FILE = parse-data`, `data_dir1 = .` |
306 | 306 | ||
307 | This script reads a directory or directories, parses the binary files inside for feather-trace or sched-trace data, then summarizes and organizes the results for output. The output can be to the console, to a python map, or to a directory tree of csvs (the default, ish). The python map (using `-m`) can be used for schedulability tests. The directory tree can be used to look at how changing parameters affects certain measurements. | 307 | This script reads a directory or directories, parses the binary files inside for feather-trace or sched-trace data, then summarizes and organizes the results for output. The output can be to the console, to a python map, or to a directory tree of csvs (default). The python map (using `-m`) can be used for schedulability tests. The directory tree can be used to look at how changing parameters affects certain measurements. |
308 | 308 | ||
309 | The script will use half the current computers CPUs to process data. | 309 | The script will use half the current computers CPUs to process data. |
310 | 310 | ||
@@ -313,13 +313,13 @@ In the following example, too little data was found to create csv files, so the | |||
313 | ```bash | 313 | ```bash |
314 | $ ls run-data/ | 314 | $ ls run-data/ |
315 | taskset_scheduler=C-FL-split-L3_host=ludwig_n=10_idx=05_split=randsplit.ft | 315 | taskset_scheduler=C-FL-split-L3_host=ludwig_n=10_idx=05_split=randsplit.ft |
316 | $ parse_exps.py run-data/ | 316 | $ parse_exps.py |
317 | Loading experiments... | 317 | Loading experiments... |
318 | Parsing data... | 318 | Parsing data... |
319 | 0.00% | 319 | 0.00% |
320 | Writing result... | 320 | Writing result... |
321 | Too little data to make csv files. | 321 | Too little data to make csv files. |
322 | <ExpPoint-/home/hermanjl/tmp/run-data> | 322 | <ExpPoint-/home/hermanjl/tmp> |
323 | CXS: Avg: 5.053 Max: 59.925 Min: 0.241 | 323 | CXS: Avg: 5.053 Max: 59.925 Min: 0.241 |
324 | SCHED: Avg: 4.410 Max: 39.350 Min: 0.357 | 324 | SCHED: Avg: 4.410 Max: 39.350 Min: 0.357 |
325 | TICK: Avg: 1.812 Max: 21.380 Min: 0.241 | 325 | TICK: Avg: 1.812 Max: 21.380 Min: 0.241 |
@@ -369,21 +369,21 @@ The second command will also have run faster than the first. This is because `pa | |||
369 | All output from the *feather-trace-tools* programs used to parse data is stored in the `tmp/` directories created in the input directories. If the *sched_trace* repo is found in the users `PATH`, `st_show` will be used to create a human-readable version of the sched-trace data which will also be stored there. | 369 | All output from the *feather-trace-tools* programs used to parse data is stored in the `tmp/` directories created in the input directories. If the *sched_trace* repo is found in the users `PATH`, `st_show` will be used to create a human-readable version of the sched-trace data which will also be stored there. |
370 | 370 | ||
371 | ## plot_exps.py | 371 | ## plot_exps.py |
372 | *Usage*: `plot_exps.py [options] [csv_dir]...` | 372 | *Usage*: `plot_exps.py [OPTIONS] [CSV_DIR]...` |
373 | 373 | ||
374 | where a csv dir is a directory or directory of directories (and so on) containing csvs, like: | 374 | where a `CSV_DIR` is a directory or directory of directories (and so on) containing csvs, like: |
375 | ``` | 375 | ``` |
376 | csv_dir/[subdirs/...] | 376 | CSV_DIR/[SUBDIR/...] |
377 | line1.csv | 377 | line1.csv |
378 | line2.csv | 378 | line2.csv |
379 | line3.csv | 379 | line3.csv |
380 | ``` | 380 | ``` |
381 | 381 | ||
382 | *Outputs*: `OUT_DIR/[csv_dir/]*[plot]*.pdf` | 382 | *Outputs*: `OUT_DIR/[CSV_DIR/]*[PLOT]*.pdf` |
383 | 383 | ||
384 | where a single plot exists for each directory of csvs, with a line for for each csv file in that directory. If only a single csv_dir is specified, all plots are placed directly under `OUT_DIR`. | 384 | where a single plot exists for each directory of csvs, with a line for for each csv file in that directory. If only a single `CSV_DIR` is specified, all plots are placed directly under `OUT_DIR`. |
385 | 385 | ||
386 | *Defaults*: `OUT_DIR = plot-data/`, `csv_dir = .` | 386 | *Defaults*: `OUT_DIR = plot-data/`, `CSV_DIR = .` |
387 | 387 | ||
388 | This script takes directories of csvs (or directories formatted as specified below) and creates a pdf plot of each csv directory found. A line is created for each .csv file contained in a plot. [Matplotlib][matplotlib] is used to do the plotting. The script will use half the current computers CPUs to process data. | 388 | This script takes directories of csvs (or directories formatted as specified below) and creates a pdf plot of each csv directory found. A line is created for each .csv file contained in a plot. [Matplotlib][matplotlib] is used to do the plotting. The script will use half the current computers CPUs to process data. |
389 | 389 | ||