Estimating Safe Worst-Case Execution Times of Real-Time Systems Using Search and Machine Learning
Creators: name: Lee, Jaekwon
Publisher: name: figshare
Year: 2023
Subjects: Software engineering not elsewhere classified

description: This page contains the artefacts of our paper, entitled "Estimating Safe Worst-Case Execution Times of Real-Time Systems Using Search and Machine Learning".<br><b>Overview</b>Estimating worst-case execution times (WCET) is an important activity at both early design and late development stages of real-time systems. Based on the WCET estimates, engineers make design and implementation decisions to ensure that task executions always complete before their specified deadlines. However, in practice, engineers often cannot provide precise point WCET estimates and prefer to provide plausible WCET ranges. Given a set of real-time tasks with such ranges, we provide an automated technique to determine for what WCET values the system is likely to meet its deadlines, and hence operate safely. Our approach combines a search algorithm for generating worst-case scheduling scenarios with polynomial logistic regression for inferring safe WCET ranges. We evaluated our approach by applying it to three industrial systems from different domains. Our approach efficiently and accurately estimates safe WCET ranges within which deadlines are likely to be satisfied with high confidence.<br><br><br><b>Prerequisite</b>SAFE runs on the following operating systems:- CentOS Linux operating system, version 7- MacOS 10.15.7<br>SAFE requires the following tools:- Java 1.8.0.241<br>- R 3.6.2 or above (required libraries: MASS, dplyr, MLmetrics, randomForest, nloptr, stringr, cubature, effsize, scales, ggplot2, grid, gridExtra)- Python 3.6.8 or above (required libraries: tqdm)<br><br><b>Input file:</b>* Step 0: Extract SAFE.zip to any PATH* Step 1: See PATH/res/industrial/ADCS.csv<br><br><b>How to run SAFE?</b>* Step 0: Extract SAFE.zip to any PATH* Step 1: Move to PATH and run ./run_safe.sh* Step 2: See output files in ./results/ADCS_SAFE<br><br><b>How to run experiments?</b>Note: Due to randomness of SAFE, we repeat our experiments 50 times<br>=EXP1=* Step 0: Extract SAFE.zip to any PATH* Step 1: Move to PATH and run ./run_exp1.sh* Step 2: See output files in ./results/EXP1/ADCS_SAFE and ./results/EXP1/ADCS_Baseline<br>=EXP2=* Step 0: Extract SAFE.zip to any PATH* Step 1: Move to PATH and run ./run_exp2.sh* Step 2: See output files in ./results/EXP2/ADCS_SAFE/_dist and ./results/EXP2/ADCS_SAFE/_random<br>=EXP3=* Step 0: Extract SAFE.zip to any PATH* Step 1: Move to PATH and run ./run_exp3.sh* Step 2: See output files in ./results/EXP3/ADCS_SAFE<br><br><b>File</b>: SAFE.zip* All scripts and artefacts for our experiments* <i>artefacts</i> folder: Containing Java executable files* <i>res</i> folder: Containing the input task description* <i>SAFE</i> folder: source codes for Java executable files and scripts* <i>scripts</i> folder: Containing Python and R scripts to help the EXPs and generate graphs* <i>run_*.sh</i> files: Shell scripts for executing each EXPs in the paper<br><br><b>File</b>: experiments.zip* Experiment results (readable version)* <i>EXP1</i> folder: Our experiment results obtained by conducting EXP1* <i>EXP2</i> folder: Our experiment results obtained by conducting EXP2* <i>EXP3</i> folder: Our experiment results obtained by conducting EXP3* <i>EXP*-graphs</i> folders: Graphs generated from each EXP * <i>Summary-RQ1.xlsx</i> file: Table 3 in the paper<br><br><b>File</b>: raw_results.zip* Experiment results for all subjects and approaches (raw data)<br><br>