This PR modifies our evaluation scripts to start iostat after the DB is opened and finishes initialization. This helps simplify our physical I/O analysis since we won't need to manually exclude the startup I/O.
The way this is implemented is that the benchmark runner sends a signal (SIGUSR1) to its parent process when initialization finishes. The parent process is the run.sh script that coordinates the evaluation. So the script starts iostat only after receiving that signal.
One caveat is that RocksDB always tries to schedule background work (e.g., compaction) after it is opened. This change does not let us avoid counting that I/O. But I suppose it's reasonable to consider that I/O as part of RocksDB's overall read/write amplification.
This PR modifies our evaluation scripts to start
iostat
after the DB is opened and finishes initialization. This helps simplify our physical I/O analysis since we won't need to manually exclude the startup I/O.The way this is implemented is that the benchmark runner sends a signal (
SIGUSR1
) to its parent process when initialization finishes. The parent process is therun.sh
script that coordinates the evaluation. So the script startsiostat
only after receiving that signal.One caveat is that RocksDB always tries to schedule background work (e.g., compaction) after it is opened. This change does not let us avoid counting that I/O. But I suppose it's reasonable to consider that I/O as part of RocksDB's overall read/write amplification.
cc @mmarkakis @andreaskipf