Artifact Evaluation Instructions

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 4

DownloadArtifact Evaluation Instructions
Open PDF In BrowserView PDF
Simultaneous Multithreading Applied to Real Time Artifact Evaluation
This document describes the experiments conducted in the paper “Simultaneous Multithreading Applied
to Real Time” by Sims Osborne, Joshua Bakita, and James Anderson, to be presented at ECRTS ‘19. Table
1 (baseline task execution times), Fig. 5 (execution rates for all pairs of tasks) and all graphs in the paper
can be duplicated by following these instructions.
Benchmarks were tested on an Intel Xeon Silver 4110 2.1 GHz (Skylake) CPU running Ubuntu 16.04.6.
Data analysis was performed with Python 3, with some results formatted using Excel. We expect
benchmarks will run on any Hyperthreading-enabled Intel platform (this includes most Xeon and Core
processors) running Linux, but results will vary with a different platform. Running on a virtual machine
will not produce the same results.

All files are available on the git repository ​https://github.com/JoshuaJB/SMART-ECRTS19.git​.

Enabling and Disabling Hyperthreading
Linux identifies processors with the following information that can be viewed by running cat
/proc/cpuinfo.
Linux maintains a unique processor number for all hardware threads in the system. With
Hyperthreading enabled, sibling processors can be identified as the processors which share a common
physical id (i.e. socket number) and core id, but have distinct processor numbers. With hyperthreading
disabled, there will be only one processor id corresponding to each unique physical id/ core id
combination. Typically, sibling threads will have processor numbers that differ by the total number of
physical cores (i.e. on a 16-core system, processors 0 and 16 are siblings), but this relationship should be
verified prior to running benchmark experiments.
Hyperthreading can be enabled and disabled under advanced boot options. Once Hyperthreading is
enabled in the boot menu, it can be turned off without rebooting by running the provided script
deactivateCoresSMT.bash and enabled again by running the script activateCores.bash. Both scripts are
in the folder interference-benchmark. The scripts assume a system of 16 physical cores with sibling
threads having processor IDs separated by 16; if this is not the case on the target platform, the scripts
will need to be edited.

The Benchmark Programs
Table 1 and Fig. 5 in the paper report results based on our modified versions of the TACLeBench
sequential benchmarks.
All files related to running benchmark programs and summarizing data are in the folder
interference-benchmark.

The folder benchmarks contains the benchmarks. It consists of 23 folders plus the file extra.h, which
contains macros that are added in to the benchmarks to assist with testing.
Within each benchmark folder, the main file has the name [folderName].c. We have modified the
benchmarks by adding input arguments, placing the main function in a loop, and outputting timing
results of each loop to a file.
Each modified benchmark accepts the following parameters.
●
●

●
●

●

maxJobs​ determines how many jobs the program executes, assuming output=1 (see below).
thisProgram, thisCore, otherCore​, and ​otherProgram​ are used to make the output more
readable. They are not used in any decision making; all decisions based on those variables are
handled by the bash scripts which run the relevant tests.
runID​ is used to define the name of the output file and also prints as part of the output.
output:​ if set to 1, the program will loop maxJobs times, killing the cache at the beginning of
each loop and recording the time taken for each loop after the first (in nanoseconds). The first
loop is not timed, but is used to make sure all relevant data is in memory; once brought into
memory all data is kept there by the mlockall() system call. At the end of each loop, outside the
timer, the program saves the recorded time. At the end of maxLoops, the program will kill all
programs whose PIDs were passed as input parameters and print output to the file runID.txt. If
output is set to 0, the program will not time itself, will not kill the cache, and will give not
output. It is expected that if output=0, maxJobs will be an arbitrarily large value and the
program will be terminated by receiving a kill signal from another program.
A string listing PIDs that should be killed upon program termination. This parameter has no
effect and can safely be omitted if output=0.

Compilation
The following bash script will compile all benchmarks and place them in the desired destination folder.
It is expected that tacleNames.txt (included in interference-benchmark) is in the location from which the
command is run and that extra.h is in the folder interference-benchmark. An example script is given in
compileAll.sh.
while read t; do
gcc /path/interference-benchmark/benchmarks/$t/*.c –o /destFolder/$t
done 
Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : Yes
Producer                        : Skia/PDF m75
Page Count                      : 4
EXIF Metadata provided by EXIF.tools

Navigation menu