Artifact Evaluation Instructions
User Manual:
Open the PDF directly: View PDF .
Page Count: 4
Download | |
Open PDF In Browser | View 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 : 4EXIF Metadata provided by EXIF.tools