Skip to content

M0: Baselines on the reference machines #1

Description

@tamnd

This milestone builds the benchmark harness and turns every published reference into a baseline that we measured. It runs PostgreSQL 19, ClickHouse and DuckDB on ClickBench, TPC-H, TPC-C and YCSB on the machines of the spec, with cgroup resource numbers for each run. At the end, each baseline number in spec/03 has a remeasured number in reports/.

Why

Every ratio in a rupg report has both numbers measured by us, on one machine, on the same day, with the same harness. A published number is a reference and never one side of a ratio. So no gate from M2 to M11 can be decided until this milestone has measured its baseline.

Some gates have no reference at all. ClickBench does not publish memory or CPU time, so G8 has no baseline until M0 measures one, and M4 needs it. The oltp machine and the warehouse counts of TPC-C are also chosen here, because a TPC-C run on a device with slow sync measures the device and not the engine.

The work

  • Create the crate with the suite drivers, the cgroup runner, the answer sets, the report generator and the machine scripts (spec/20 §20.12)
  • Write pins.toml with ClickBench at e6bda4e, PostgreSQL REL_19_STABLE at 7d3d2db7, rudb at cd9f9676, and the versions of ClickHouse, DuckDB, Umbra or CedarDB and SQLite (spec/20 §20.1, spec/03 §3.14)
  • Write the cgroup v2 runner that reads memory.peak, file in memory.stat, Pss, usage_usec, io.stat and du --apparent-size --bytes, and the idle base over 10 s (spec/20 §20.4)
  • Write the load case steps for case A and case B with drop_caches, fincore and the timed cat of the source file (spec/20 §20.3.1)
  • Write the machine scripts that start a 4xl, metal or oltp instance, install the pinned versions, run a suite and stop the instance (spec/20 §20.12)
  • Choose the oltp machine: at least 32 cores and local NVMe with power loss protection, with an fdatasync p50 below 100 µs measured with fio (spec/20 §20.2)
  • Choose the tpch machine for SF100: at least 64 vCPU, 256 GiB and local NVMe (spec/20 §20.2)
  • Run ClickBench on 4xl and metal, hot, cold and load, for PostgreSQL 19, PostgreSQL 19 tuned, ClickHouse, DuckDB and Umbra or CedarDB where the license permits (spec/03 §3.15)
  • Compute the PostgreSQL 19 answer sets for ClickBench and TPC-H once on metal and store them with the harness (spec/20 §20.5.2)
  • Run TPC-H at SF1, SF10 and SF100 for DuckDB and PostgreSQL 19, hot and cold, with dbgen 3.0.1 and qgen -d (spec/03 §3.15, spec/20 §20.7)
  • Choose the two TPC-C warehouse counts and the virtual users from the memory of oltp, and run HammerDB for PostgreSQL 19 with procedures and with statements (spec/20 §20.8)
  • Run YCSB A, B, C and F for PostgreSQL 19 with and without pipelining, and choose the record count (spec/20 §20.9)
  • Measure the commit curve and the fdatasync latency of the gate machine (spec/03 §3.15)
  • Measure the idle memory of PostgreSQL 19 at 1,000 connections with the same shared_buffers as rupg (spec/03 §3.15)
  • Add the pgbench smoke run with its consistency check (spec/21 §21.4.6)
  • Write the instruction count runner with the fixed set of spec/21 §21.14 (spec/21 §21.14)
  • Record each difference above 10 percent from the published number in the M0 report with its cause (spec/03 §3.15)

Exit criterion

  1. Each baseline number in spec/03 has a remeasured number in reports/, with the exact version, the configuration file, the machine and the date.
  2. Each remeasured number that differs from the published one by more than 10 percent has its cause in the M0 report.
  3. The memory and CPU time of each ClickBench baseline on 4xl are measured, so G8 has a reference before M4 starts.
  4. The oltp machine has a measured fdatasync p50 below 100 µs, and the TPC-C warehouse counts, the virtual users and the YCSB record count are fixed in the report.
  5. No gate of spec/02 §2.10 is decided here.

Engine milestone

Depends on

Nothing.

Spec

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

    area/buildThe workspace, CI and the harness itself.area/enginesPostgreSQL, ClickHouse, DuckDB and the other baselines.area/machinesMachine records, CPU pinning and noise control.area/resourcescgroup v2 memory, CPU and disk measurement.kind/milestoneA milestone from spec/23-milestones.md.priority/p0Stop other work. A wrong answer, a data loss, or a broken gate.

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions