# devstone-comparative Here you can find several DEVStone implementations for comparing the main DEVS engines. Adapted to benchmark Dynamic Structure DEVS ## Running the pypdevs benchmarks First select a simulator: - classic - parallel - dynamic - classic - number of models to generate per cycle - minimal Shared parameters: - path: where the results will be stored - filename: - append: will append the data to the output file instead of overwriting it - max width/depth: max model width/depth - width/depth step size: - determines how fast the width/depth increases to the max specified value - the simulation will be run for every width and depth combination - the step size must be a divider of the max width/depth - if not provided the model will run only the max width/depth - repetitions: number of times the exact same simulation will be repeated - output - memory: Measures the memory usage of a simulation. - interval: The interval at which measurements are taken. - model structure: each simulator has its own set of models - LI, HI, HO, HOmod (classic, parallel, dynamic, minimal) - HI2LI, LI2HI, dLI, dHI (dynamic) For each simulation the parameters and the creation, setup and simulation time are saved to a csv file. ## plotting ## Measuring Memory Run the following command, the width and depth step size parameters should be left out, to measure the memory usage of a single simulation, for the same reason the repetitions should be set to one. ``` uv run testPyPDEVS.py -md 100 -mw 100 -r 1 -O dynamic -ms dLI & PID=$!; python -m procpath record -i 0.1 -f stat -d output.sqlite --stop-without-result "$..children[?(@.stat.pid == $PID)]" ``` ``` procpath plot -d output.sqlite -f out.svg -q rss ```