Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Claim C2 Ring Measurement Evidence — 2026-08-02

This bundle supports the Claim C2 Ring Measurement record. Five foreground make test-measure runs used clean source commit 4c68f10139eefd29ac0db38dc721409f2b6067f1 and pinned QEMU to host logical CPU 0:

CAPOS_MEASURE_QEMU_TASKSET_CPUS=0 \
  CAPOS_MEASURE_ARTIFACT_DIR=target/paper-c2-measure-20260802/run-N \
  make test-measure

The run interval was 2026-08-02 15:01:21–15:03:57 UTC. QEMU 8.2.2 used KVM, one qemu64 guest vCPU, and 256 MiB guest RAM. The KVM host exposed eight logical CPUs, four cores, two threads per core, and an Intel Xeon 2.80 GHz CPU. Pinning constrained QEMU’s affinity but did not isolate CPU 0 from other host work. host.txt retains the host envelope.

Each make invocation rebuilt capos-measure.iso; consequently, the five invocation records have distinct ISO SHA-256 values even though all name the same clean source commit. Each record also retains the resolved QEMU command and QEMU version.

Extracted observations

RunWarmed NOP cyclesNullCap empty cyclesNullCap schema cyclesSchema overhead cyclesCALL-to-receiver cyclesDirect ready-to-select cycles
133,89437,7595,111,4716,0817,969,332402,336
232,43637,74143,9224,9167,902,385400,517
334,33937,62244,6654,1417,938,635406,615
432,75536,55344,4404,0157,882,146393,480
532,69637,04745,4134,1737,929,650396,793
Median32,75537,62244,6654,1737,929,650400,517
Range32,436–34,33936,553–37,75943,922–5,111,4714,015–6,0817,882,146–7,969,332393,480–406,615

The user-side NullCap columns come from [ring-nop] measure avg cycles and include ring publication, cap_enter, dispatch, and completion consumption. The schema-overhead column comes from measure: schema_dispatch_overhead; it subtracts the kernel’s aligned NullCap empty-method segment average from its schema-parsing method average. Each path has one timing-guard lifecycle. The schema guard records its single interval into both null_cap_schema and capnp_decode_encode, rather than nesting a second timer inside the schema interval. Both NullCap segment counters observed 80 calls in every run. The direct ready-to-selection intervals ranged from 378,888 to 548,506 cycles across all 355 observed direct selections.

The capability-slot record was identical in every run: measure: cap_slot_memory slot_bytes=80 max_slots=256 max_slot_storage_bytes=20480. The 80-byte figure is inline CapSlot vector storage on this x86_64 build. It excludes allocator metadata and separately allocated or shared capability objects and epoch cells, so it is not total per-capability heap ownership.

The global dispatch segments provide diagnostic attribution rather than isolated workload costs:

Segment averageMedian cyclesFive-run range
ring_processing5,318,2895,292,060–5,987,924
sqe_validation19,50819,127–19,740
cap_lookup584,498584,168–763,821
capnp_decode_encode7,0296,565–7,129
method_body8,414,6728,359,230–9,250,237
cqe_post551509–657
waiter_wake_check11,74511,307–12,519

These boot-global segments combine all workloads in the measure manifest and may be nested; they must not be summed into an end-to-end latency.

Evidence boundary

The bundle closes the schema-dispatch and inline capability-slot-storage measurements. It does not close three distinct measurements:

  • The NOP line is a warmed, eight-SQE batched cycle average. It does not report a cold-ring sample, so it cannot supply a warm-versus-cold cap_enter comparison.
  • measure: ring dispatches=... sqes=... reports boot-global counts without a calibrated elapsed interval. It is not SQE throughput in operations per second.
  • The CALL-to-receiver workload mixes direct and ordinary scheduling, while direct_ipc_ready_to_select times only observed direct selections. Neither line measures a matched ordinary-scheduler baseline, so they do not provide a scheduler-versus-direct-switch latency comparison.

These are nested-QEMU/KVM cycle observations from one 156-second collection window. Host affinity is not isolation, guest TSC behavior is virtualized, and the measure image retains other debug instrumentation. The ranges characterize only these five runs; they are not reproducibility bounds, hardware results, or production-performance claims.

The serial logs retain QEMU’s CRLF output. SHA-256 digests below are for their LF-normalized contents:

c3c5742efdb006c177497fd5c7f9fbc3baa4967ddac4e6705239af74d075f2d2  run-1-kernel.txt
2503a4373576118f6dff48b168b5027e937b752d42e89bf1bdb128b3c47a240e  run-2-kernel.txt
693988bb51a911aaffa47012f8b9161081b60e9c59af3bbba3981dd3360516d1  run-3-kernel.txt
29130c2f78c5d726655f74c020bcdd4651d15747274886a50e3fdbe2ac2db514  run-4-kernel.txt
a84e9b3d8840c7793b5d08e76e981ebf16c27cdd7446d0f86fc30e619b83b1c9  run-5-kernel.txt

The terminal files contain only QEMU’s unsupported-SVM-feature warning. tools/qemu-measure-smoke.sh verified every run’s required output and clean proof termination.