Concurrency and scaling¶
Scope: this implementation’s own serializers and their measured cost on one many-core host. Not normative. Target: the C++23 reference implementation under
core/, on a many-core host. Companion:../../reference/15-concurrency-and-scaling.mdis the standard-level half — the obligations any implementation must meet and the four hardware regimes. Everything here is specific to this codebase and one host, and none of it is normative.
Where the reference suite states what must hold, these pages state what it costs here: which serializers exist, what each one guards, which shapes scale on this host, and which serializers remain on the hot paths.
File |
Topic |
|---|---|
The serializer inventory with file anchors; the two independent limits on the read path; the measured effect of removing the per-read map lock and of binding the hazard-pointer slot; the cost budget; the remaining serializers; the diagnostic recipe; and how measurement goes wrong here. |
|
The write and delivery half: the snapshot-under-lock split, the vertex lock stripes taken on every delivery, fan-out and scatter-gather delivery cost, and the forward-demux mount scan. Its forward-hop and mount-scan figures come from |
The three instruments behind the figures here¶
bench/ holds several dozen bench sources. This table is not an inventory of them: it names the three
that produce the numbers in 00-scaling-and-serialization.md,
because it matters which one a figure came from. The write and delivery path quotes a fourth,
named in its row above.
instrument |
what it measures |
committed? |
|---|---|---|
the machine — what one shared cache line costs, libtracer absent |
yes |
|
model slot policies ( |
yes |
|
the |
the ceiling a lock removal could reach |
not committed; it short-circuits the fork check ( |
A slot-mode arm models a slot policy in isolation and is not the cost of any code path. The
arms are named model_* in the source (bench/bench_lkv_slot.cpp:193,342,456) so that a model
policy and a real library type cannot be confused. Never quote a slot-mode number as a forecast
for a real path.