Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
paolo-ecrts19
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martina Maggio
paolo-ecrts19
Commits
ee94a849
Commit
ee94a849
authored
6 years ago
by
Martina Maggio
Browse files
Options
Downloads
Patches
Plain Diff
adding readme
parent
250cf298
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
artifact/README
+186
-0
186 additions, 0 deletions
artifact/README
with
186 additions
and
0 deletions
artifact/README
0 → 100644
+
186
−
0
View file @
ee94a849
------------------------------------------------------------------
*** GENERAL INFORMATION ***
------------------------------------------------------------------
This artifact complements the paper
DMAC: Deadline-Miss-Aware Control
P. Pazzaglia, C. Mandrioli, M. Maggio, and A. Cervin
Euromicro Conference on Real-Time Systems (ECRTS), 2019
The paper describes a synthesis technique for controllers that are
aware of deadline misses and can use three different strategies to
handle the misses: kill the job, let the job continue and skip the
next, let the job continue and queue the next using a queue of
maximum size 1 that contains the freshest job.
The code reproduces figures 7, 8, and 9 from the paper.
------------------------------------------------------------------
*** EXECUTION INSTRUCTIONS ***
------------------------------------------------------------------
Requirements for the code execution:
* The code is better run in a Unix platform. Specifically, the code
has been tested on both Linux (Fedora 25) and MAC OS X. It is
possible to run the code on Windows machines, but not following
these instructions (automation via shell scripting does not work).
* The code requires: a C++ compiler, MATLAB, and a bash shell. The
code has been tested with clang++ on Mac OS and g++ on Linux and
with different versions of MATLAB (from R2012 to R2016a).
Finally, the code requires a full version of latex installed for
the generation of the figures (that uses tikz and pgfplots).
The artifact has the following folder structure:
| - figures
| | - fig7.tex
| | - fig8.tex
| | - fig9.tex
| - src
| | - matlab
| | | - ...
| | - scenario
| | | - ...
| | - sim
| | | - ...
| - tasksets
| | - ...
| generate_results.sh
| process_results.sh
| plot_results.sh
The folder tasksets contains many tasksets that can be tested. In
the figures shown in the paper we use 7 of these tasksets:
n5_u70taskset_25.csv,
n5_u70taskset_100.csv,
n5_u80taskset_25.csv,
n10_u70taskset_25.csv,
n10_u70taskset_100.csv,
n20_u70taskset_25.csv,
n20_u70taskset_100.csv.
The other files are given in case the reviewer wants to experiment
with different values (this requires modifications of the scripts).
The folder figures contains the latex sources for the figures.
The folder src contains the source code.
Finally, there are three scripts in the main folder:
generate_results.sh, process_results.sh, and plot_results.sh.
To run the code for the artifact four steps are required:
1) Modify the MATLAB path folder in process_results.sh to point to
the folder where MATLAB is installed. Two examples are given for
standard Linux and MAC OS X installations.
MATLABPATH="/usr/local"
MATLABPATH="/Applications/MATLAB_R2017a.app"
2) Open a terminal and run the script to generate the result files
with the following command:
chmod a+x generate_results.sh && ./generate_results.sh
NOTE: this command will take quite a long time to execute.
On an machine with 8 cores this command ran for >48 hours.
Running this script performs the following operations:
- runs the scenario theory C program to determine the
number of experiments to perform
- runs the C++ simulator to produce the data (this step is
parallelized, 7 processes called "simulator" are launched),
they write files in the "results" folder that is created by
the script
The output shown at the command line should resemble this:
************************************************************
~$ ./generate_results.sh
------------------------------------------------
Scenario Theory:
------------------------------------------------
epsilon = 0.003000
beta = 0.010000
experiments = 1533
------------------------------------------------
Simulator:
------------------------------------------------
num_tests = 1533
num_jobs = 500
number of time steps = 15
num samples execution time = 5
skew factor = 0.75
- launched result generation for n5_u70taskset_25.csv
- launched result generation for n10_u70taskset_25.csv
- launched result generation for n20_u70taskset_25.csv
- launched result generation for n20_u70taskset_100.csv
- launched result generation for n5_u80taskset_25.csv
- launched result generation for n10_u70taskset_100.csv
- launched result generation for n5_u70taskset_100.csv
------------------------------------------------
data generation terminated
------------------------------------------------
************************************************************
3) Once step 2 is completed run the script to process the data,
generate the controller and perform the control analysis, with
the following command:
chmod a+x process_results.sh && ./process_results.sh
NOTE: this command will take some time to execute.
On an machine with 8 cores this command ran for >8 hours.
Running this script runs the MATLAB program that processes the
data (in a parallelized form). The output shown at the command
line should resemble this:
************************************************************
------------------------------------------------
Matlab wrote results for n10_u70_f100
Matlab wrote results for n10_u70_f25
Matlab wrote results for n20_u70_f100
Matlab wrote results for n20_u70_f25
Matlab wrote results for n5_u70_f100
Matlab wrote results for n5_u70_f25
Matlab wrote results for n5_u80_f25
------------------------------------------------
data processing terminated
------------------------------------------------
************************************************************
4) Once step 3 is completed run the script to generate the figures
for the paper using the following command:
chmod a+x plot_results.sh && ./plot_results.sh
This command uses the results saved in the result folder to plot
the figures that are shown in the paper. In particular, the
script generates three files {fig7.pdf, fig8.pdf, fig9.pdf} that
correspond to the paper figures.
Due to randomness (in the sequence generation), the figures may
differ from the paper ones, but the trends should be the same
and the plots should generally be similar.
-----
NOTE:
-----
It is possible to bypass step 1, 2 and 3, downloading the zip files
that contains the result files from the following link:
http://XXX
Once downloaded, unzip the file in the artifact folder and
follow (only) step 4.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment