# Direct IPC Timing Evidence — 2026-07-27

This bundle supports the
[Direct IPC Handoff Timing](../benchmarks.md#direct-ipc-handoff-timing) record.
The source state is the commit that adds this page; its commit message names
the retained run directory `target/ipc-direct-switch/20260727T022642Z/`.

## Invocation and host envelope

All five samples ran in the foreground with:

```sh
CAPOS_MEASURE_QEMU_TASKSET_CPUS=0 \
  CAPOS_MEASURE_ARTIFACT_DIR=target/ipc-direct-switch/20260727T022642Z/run-N \
  make run-measure
```

The run interval was 2026-07-27 02:27:31–02:29:07 UTC. QEMU 8.2.2 used
`-enable-kvm`, one default `qemu64` vCPU, 256 MiB guest RAM, and host logical
CPU 0 through `taskset`. The host exposed eight logical CPUs, four cores, two
threads per core, and an Intel Xeon 2.80 GHz CPU under KVM. Pinning constrained
QEMU's process affinity; it did not isolate the host CPU from other work.

The selected host metadata is in
[host.txt](direct-ipc-20260727/host.txt), and the shared command template is in
[invocation.txt](direct-ipc-20260727/invocation.txt). These historical
invocation files retained a placeholder for the manifest-derived serial
arguments and did not bind the ISO or source commit, so they are not exact
build-provenance records. Current `make run-measure` artifact capture records
the resolved serial arguments, source commit and cleanliness, and ISO SHA-256.
Each sample also retains its own command template and terminal output:

| Run | Invocation | Kernel serial | Terminal |
| ---: | --- | --- | --- |
| 1 | [run-1](direct-ipc-20260727/run-1-invocation.txt) | [run-1](direct-ipc-20260727/run-1-kernel.txt) | [run-1](direct-ipc-20260727/run-1-terminal.txt) |
| 2 | [run-2](direct-ipc-20260727/run-2-invocation.txt) | [run-2](direct-ipc-20260727/run-2-kernel.txt) | [run-2](direct-ipc-20260727/run-2-terminal.txt) |
| 3 | [run-3](direct-ipc-20260727/run-3-invocation.txt) | [run-3](direct-ipc-20260727/run-3-kernel.txt) | [run-3](direct-ipc-20260727/run-3-terminal.txt) |
| 4 | [run-4](direct-ipc-20260727/run-4-invocation.txt) | [run-4](direct-ipc-20260727/run-4-kernel.txt) | [run-4](direct-ipc-20260727/run-4-terminal.txt) |
| 5 | [run-5](direct-ipc-20260727/run-5-invocation.txt) | [run-5](direct-ipc-20260727/run-5-kernel.txt) | [run-5](direct-ipc-20260727/run-5-terminal.txt) |

## Extracted observations

| Run | CALL-to-receiver mean cycles | Direct selections | Ready-to-selection mean cycles | Minimum | Maximum |
| ---: | ---: | ---: | ---: | ---: | ---: |
| 1 | 8,331,819 | 71 | 414,989 | 384,829 | 494,458 |
| 2 | 8,046,901 | 71 | 407,062 | 381,529 | 534,133 |
| 3 | 7,924,721 | 71 | 396,515 | 378,951 | 499,971 |
| 4 | 7,757,445 | 72 | 387,503 | 378,337 | 523,416 |
| 5 | 7,845,114 | 72 | 394,393 | 378,660 | 476,480 |

The CALL-to-receiver column contains all 64 measured workload rounds. The
boot-global direct-selection counter is not correlated with individual rounds,
so the table does not claim that every CALL-to-receiver sample used the direct
target. The ready-to-selection columns summarize only selections observed by
the direct-target scheduler instrumentation. The five-run ranges characterize
this 96-second collection window only; they are not reproducibility bounds.

The serial logs retain QEMU's CRLF output. The SHA-256 digests below are for
their LF-normalized contents (`tr -d '\r' < run-N-kernel.txt | sha256sum`):

```text
258b24e237abf185c271bac1b1308b6282e7cf7149b60beb5978ac363af07f92  run-1-kernel.txt
6bb099ec512faa75111651ad5c846a4dd667cbd746a2e51896bc5f3b852ee034  run-2-kernel.txt
a7876389a080c630cee177e11fa9686dcbf3872f382bdb08d318f2b65e5ac1d2  run-3-kernel.txt
098984217fdaccca8fb131a5d1bedcc790174aa18563f5c962ff9c13c204a509  run-4-kernel.txt
5add0328109003542897ec49809ff007b53546be84ef737d801eef88dc73b5d5  run-5-kernel.txt
```

The QEMU terminal files contain only the host's unsupported-SVM-feature
warning. `tools/qemu-measure-smoke.sh` verified that no process output leaked
onto that UART and that every run completed the direct-IPC assertions.
