Analysis on "Nested, but Separate: Isolating Unrelated Critical Sections in Real-Time Nested Locking"
Real time Kernel and Systems course project - University of Padova (Italy) 2020-21 (Prof. Tullio Vardanega)
This project is based on J. Robb and B. B. Brandenburg work (see Nested, but Separate: Isolating Unrelated Critical Sections in Real-Time NestedLocking), where we analyze the GIPP protocol from the theoretical and practical viewpoint. In this repository the source code is entirely attributed to J. Robb and B. B. Brandenburg, both for the GIPP LP analysis and schedcat library, respectively. The experiments reported are obtained through this exact source code, which was available from J. Robb's personal website (see jamesrobb.ca).
This repository is structured as follows:
/experimentscontains all the experiments executed by the authors of this project in a form of PDFs and CSV data files. The PDFs are the graph generated from the CSV files, which can be imported in LaTeX if needed./gipp_codecontains all the source code of the analyzed experiment, made by J. Robb and B. B. Brandenburg./in the folder is possible to see the docker files made by the authors of the project, as well as this readme file.
The following branches are currently active and have been used to inspect the code and to edit part of the source code:
features/code-inspectioncontains a few notes through the code (in italian and english language), useful to understand some functions and implementations.features/c-omlp-comparisoncontains edited code that replace the CA-RNLP protocol with C-OMLP, as well as other extra configuration inside the/gipp_code/gipp-experiments/_extrafolder.
We use a docker container to provide a single environment to use Python 2.7 along with different other tools, such as GLPK and SWIG. Make sure have a running Docker daemon before starting.
- Clone this Github repository.
- Go to the repository folder and enter
docker-compose up -d --buildordocker compose up -d --build(depending on the docker / docker-compose version you have). - The container will start in a few minutes, after building.
- Go to the repo folder and enter
docker-compose down -v - The container will stop in a few seconds
- Once you attach the terminal to the container, go to
/app/schedcat/and executemake.- This will compile all the C++ files needed for SWIG
- Execute this part only the first time you start the container
- Go to
/app/gipp-experimentsand execute./generate_experiment_calls.sh- If necessary, add execution permission with
chmod +x experiment_calls.sh
- If necessary, add execution permission with
- Execute
./experiment_calls.sh- Be careful! you're going to execute a tons of Python commands and this might halt you system! Make sure you have enough resources to run the experiments or separate them in a different way.
- Make sure
/app/gipp-experiments/data_completehas some csv files.- If not so, execute the experiment first.
- Go to
/app/gipp-experimentsand executepython2 produce_plots.py
- Giuseppe Rossano
- Mariano Sciacco
- James Robb (
gipp_code) - B. B. Brandenburg (
schedcatlibrary, see brandenburg/schedcat)
