Skip to main content

Environments

An environment is the unit of comparability for hardware. Every record carries an environment id, and this site never draws two environments on one axis.

That is why an environment is a committed profile with a stable id rather than a hostname. A hostname is not a hardware disclosure — it cannot be compared across machines and tells a reader nothing they can reproduce against. Each record also carries a digest of the profile, so editing it later cannot retroactively re-describe runs that already happened.

m5max-mbp-docker — the reference environment

Class: indicative. Not authoritative, and the site renders that caveat from this field rather than from a string match on the operating system — so when a bare-metal environment is added, the banner disappears on its own rather than having to be remembered.

HostApple MacBook Pro, M5 Max
CPU18 cores — 6 performance + 12 efficiency
Memory128 GiB, with 72 GiB given to the Docker VM
OSmacOS, Docker Desktop Linux VM, arm64

Why it is labelled indicative

Docker Desktop runs a Linux VM. A JVM inside it on arm64 is not a JVM on Linux bare metal, and no arm here should be read as one.

The cores are heterogeneous and the hypervisor maps VM vCPUs across performance and efficiency cores non-deterministically. --cpuset-cpus would pin to VM vCPUs, not physical cores, so it does not help. This is an irreducible variance source: run-to-run spread reached 14.5% on throughput, which is why three repetitions is the floor rather than a nicety and why every chart shows spread.

The envelope

Per system: 4 CPUs and 16 GiB of data plane. A control plane — a Flink JobManager, a Connect coordinator — is allocated on top, with its measured consumption published alongside the arm's total rather than pre-charged against it. Swap is disabled so memory pressure surfaces rather than hiding.

Memory is deliberately far more than any arm needs, so that no garbage-collected runtime is penalised for an allocation we chose. The methodology states what that does to the memory number, which is the honest cost of the choice.

Infrastructure sits outside every arm's budget and is identical for all of them: Redpanda at 8 CPUs / 8 GiB, ClickHouse at 5 CPUs / 12 GiB, an 8-partition topic. It is declared in the environment profile rather than passed on the command line — which is the fix for a real failure, where a runner script, the driver's defaults and the written methodology stated three different envelopes while no record said which had been in force.

The driver applies what is declared, then reads the caps back out of the running containers' cgroups and asserts they match. A mismatch fails the run rather than warning.

The headroom rule

Before any arm is published, a ceiling pass measures what the shared consume path can absorb. An arm exceeding 70% of that ceiling is infra-bound and cannot be published as a system comparison — above it we are measuring the broker and ClickHouse, not the system.

Such a run is recorded with a failed status rather than discarded, so "we ran it and it blew the limit" stays distinguishable from "we never ran it".

Adding one

Add a profile to environments/, run against it, and the site will keep its results in their own comparability group automatically. Results from hardware we do not control are welcome and are flagged as such — no rendering logic is needed, because a different environment id already separates them.