Skip to content

M5 Runner, one run on real hardware #7

Description

@tamnd

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cacheThe seven cache adapters and process lifecyclegateBlocks a milestone exitmemtierThe load generator driver and its output parsermilestoneMilestone tracking issueperfperf, the PMU, cycles per operation

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions