You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One benchmark run on real hardware, start to finish, written to one JSON file. Everything before this milestone is arithmetic over data somebody else measured. This is where the project starts measuring.
The sequence is fixed and does not vary by engine. Start the server pinned to the first half of the cores, with persistence off and a memory limit large enough that nothing is ever evicted, listening on a unix socket. Wait for it to answer by connecting, not by sleeping. Run memtier once as a warmup and throw it away. Run it again, pinned to the other half of the cores, and keep that. Stop the server, wait for the process group to be gone, and check that nothing was left behind.
Scope
All seven adapters, each with its own thread flag, persistence off, memory limit and unix socket argv.
Readiness by probe. Sleeping instead is how a benchmark ends up measuring a server that was still growing its hash table.
CPU pinning through sched_setaffinity in a pre_exec hook rather than by shelling out to taskset. This is the only unsafe block in the tree and it carries a safety comment.
Process group termination and a stray process check after every run, because a server that survived its run competes with the next one for the same cores and the result looks like a real number.
The memtier driver, its argv, and a parser for its output. The argv is validated rather than assumed, since a flag that memtier silently ignores is a benchmark that silently measures something else.
The warmup pass, which is not a courtesy. Several of these engines allocate lazily and a first pass measures the allocator.
The perf driver, the PMU probe, and CSV parsing, with cycles counted on the server process only and only for the measured pass.
cache-bench run, one cell, one file.
Exit, and it is a gate
Every one of the seven servers starts, answers, completes a run and stops cleanly on a real Linux host, with and without perf attached, and no stray process is left behind by any of them.
One benchmark run on real hardware, start to finish, written to one JSON file. Everything before this milestone is arithmetic over data somebody else measured. This is where the project starts measuring.
The sequence is fixed and does not vary by engine. Start the server pinned to the first half of the cores, with persistence off and a memory limit large enough that nothing is ever evicted, listening on a unix socket. Wait for it to answer by connecting, not by sleeping. Run memtier once as a warmup and throw it away. Run it again, pinned to the other half of the cores, and keep that. Stop the server, wait for the process group to be gone, and check that nothing was left behind.
Scope
sched_setaffinityin a pre_exec hook rather than by shelling out to taskset. This is the only unsafe block in the tree and it carries a safety comment.cache-bench run, one cell, one file.Exit, and it is a gate
Every one of the seven servers starts, answers, completes a run and stops cleanly on a real Linux host, with and without perf attached, and no stray process is left behind by any of them.