aboutsummaryrefslogtreecommitdiff
path: root/src/benchmark.py
Commit message (Collapse)AuthorAgeFilesLines
* catch SIGSEGV as well; register sa_handlers only if its SIG_DLF beforeFlorian Fischer2019-09-291-7/+2
|
* catch if cmd abortsFlorian Fischer2019-09-291-1/+7
| | | | | | perf stat does not propagate if the measured cmd aborts. To solve thing in a universal way we register a SIGABRT handler which creates the file aborted
* add perm substitution for benchmarks with empty argsFlorian Fischer2019-09-191-0/+2
|
* add raxml-ng benchmarkFlorian Fischer2019-09-141-3/+3
|
* explicitly collect binary versionsFlorian Fischer2019-09-111-1/+0
| | | | | | | There is no generic way to retrieve the version of a binary. Not everyone followes GNU cli guidelines and supports "--version". The larson benchmark for example reads input from stdin when started with "larson --version" blocking the Benchmark.prepare() call.
* fix wrong use of benchmark.results["facts"]Florian Fischer2019-09-111-1/+1
|
* add build_dir member to Benchmark objectsFlorian Fischer2019-09-111-0/+4
|
* improve server benchmarksFlorian Fischer2019-09-111-20/+55
| | | | | | | servers are now dictionary with two mandatory keys: "name" and "cmd". Optional keys are: * "prepare_cmds": commands are run after a server is started * "shutdown_cmds": commands are run before a server is terminated
* add runs to benchmark factsFlorian Fischer2019-09-111-0/+2
|
* fix barplot for benchmarks with empty args dictFlorian Fischer2019-09-041-3/+9
|
* rework Benchmark.terminate_subprocess to use Popen.communicateFlorian Fischer2019-09-041-10/+12
| | | | code is inspired by the example in the python3 subprocess documentation
* try to get version of benchmark requirementsFlorian Fischer2019-08-301-1/+3
|
* improve benchmark code qualityFlorian Fischer2019-08-291-11/+17
|
* require a name in Benchmark.__init__Florian Fischer2019-08-291-15/+16
|
* remove verbosity argument from hooksFlorian Fischer2019-08-271-9/+3
|
* set Benchmark.result_dir in Benchmark.__init__Florian Fischer2019-08-261-0/+6
|
* add error bars to barplot_single_argFlorian Fischer2019-08-261-2/+9
|
* only call shutdown_servers if there are serversFlorian Fischer2019-08-241-1/+2
|
* add benchmark members to available substitutionsFlorian Fischer2019-08-221-0/+2
|
* remove duplicate check if we really should run the benchmarkFlorian Fischer2019-08-221-4/+1
|
* stop saving or calculating stats of allocators without measurementsFlorian Fischer2019-08-221-3/+11
|
* remove old not used statistic fields from results dictionaryFlorian Fischer2019-08-221-2/+0
|
* Merge branch 'lld'Florian Fischer2019-08-201-12/+25
|\
| * add lld benchmark using lld provided benchmarkslldFlorian Fischer2019-08-201-13/+26
| | | | | | | | | | | | | | Benchmark changes the current working directory if self.run_dir is set befor each benchmark run. lld does not work with print_status_on_exit.so so reading and removing status is no only done if a status file is available.
* | fix benchmarks without measure commandFlorian Fischer2019-08-201-4/+6
|/
* let the loader load the benchmark not execFlorian Fischer2019-08-121-1/+2
| | | | | If the loader calls build/exec the execvp from build/exec is handled by the system loader.
* fix benchmarks for any glibc versionFlorian Fischer2019-08-121-1/+1
| | | | | | | | | use the included loader of the build glibc instead of LD_LIBRARY_PATH. Using LD_LIBRARY_PATH probably fails because of incompatible system loaders and newer glibc versions. Then we have to reverse the positions of {measure cmd} and {cmd prefix} in the exec chain because ld loads only ELF binaries and {measure cmd} could be a script.
* use absolut path of benchmark binaryFlorian Fischer2019-08-121-1/+2
|
* use LD_LIBRARY_PATH for glibc instead of calling its loaderFlorian Fischer2019-08-121-1/+7
| | | | | | | | Calling the loader fails on non ELF executables. Exec, formerly run_cmd, now takes two options: -l LD_LIBRARY_PATH, -p LD_PRELOAD. -p sets LD_PRELOAD and -l LD_LIBRARY_PATH before executing the rest of argv. glibc no longer uses cmd_prefix in favor of LD_LIBRARY_PATH.
* Rework exec chainFlorian Fischer2019-08-111-18/+17
| | | | | | | | | | | | | | Originally the structure of the executed cmd was {measure cmd} {allocator cmd prefix} {cmd} with the parent environment except LD_PRELOAD was modified for the whole command chain. Unfortunatly perf causes segfaults with some allocators and measuring allocators cmd prefixes doesnt seem fair. So the new cmd chain looks like: {allocator cmd prefix} {measure cmd} run_cmd <LD_PRELOAD> {cmd} without touching the environment in python. run_cmd sets LD_PRELOAD to the value it received in argv[1] and executes argv[2] with the rest of argv. This does also measure code not part of the actual benchmark but in a equal manner and not only for some allocators.
* be more carefull with default entries in Benchmark.resultsFlorian Fischer2019-08-101-10/+18
|
* add facts to dataref exportFlorian Fischer2019-07-311-19/+43
|
* apply some flake8 hintsFlorian Fischer2019-06-191-36/+34
|
* fix old variable name in debug outputFlorian Fischer2019-06-171-1/+1
|
* save full server /proc/pid/status file in each result entryFlorian Fischer2019-05-271-1/+4
|
* fix libc_ver using code from pipFlorian Fischer2019-05-271-1/+1
|
* fix cmd for non server benchmarksFlorian Fischer2019-05-151-1/+1
|
* introduce server concept to BenchmarkFlorian Fischer2019-05-151-32/+102
| | | | | | | | | | | | A benchmark object can specify a list of cmds to execute as "servers" in the member attribute server_cmds. Servers are started and terminated through Popen objects. This requires the server cmds to not daemonize so the server can be terminated through the Popen object. For each started server cmd a shutdown function is registered with atexit to terminate all servers even if a exception occurs. Use the new server concept in httpd and mysql benchmarks
* add export to datarefFlorian Fischer2019-05-081-1/+27
|
* fix upper-whisker, singularize whisker names and capitalize csv headersFlorian Fischer2019-05-081-5/+5
|
* move list of available benchmarks to src.globalvars.benchmarksFlorian Fischer2019-04-291-1/+0
| | | | fix analyse
* fix Benchmark.runFlorian Fischer2019-04-281-1/+1
|
* use special allocator "malt" during analyse to run the benchmark only onceFlorian Fischer2019-04-281-6/+4
|
* don't fail if NaN is in evalFlorian Fischer2019-04-281-1/+7
|
* add standart deviation in percent of meanFlorian Fischer2019-04-151-0/+2
|
* improve descriptive statistics, csv-export and add general barplot functionFlorian Fischer2019-04-131-110/+198
|
* make tex tables standaloneFlorian Fischer2019-04-101-0/+3
|
* add normalization to plot_fixed_argFlorian Fischer2019-04-101-2/+10
|
* fix autoticks in plot_fixed_argFlorian Fischer2019-04-101-1/+1
|
* add analyze and server_benchmark featureFlorian Fischer2019-04-021-49/+61
| | | | | | | | | | | | | | | | | | | | | | --analyze uses malt to trace the benchmarks behavior. It uses the run loop but the obtained results are not stored Benchmark.server_benchmark is used if only a server is started for each allocator and clients are used to measure its performance in the run loop. If server_benchmark is set to True the cmds are run with the system default allocator. Misc changes: * The global environment is no longer changed. Instead a custom env dict is passed to suprocesses containing LD_PRELOAD. * Failing cmds no longer skip the whole benchmark instead they now skip the malfunctioning allocator. * Fix default title in plot_single_arg an analyse run are not stored