diff options
| author | Breno Leitao <leitao@debian.org> | 2026-05-24 17:44:59 +0300 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-05-28 15:33:25 +0300 |
| commit | d29bd8efe16239608b60173a7e8d842bcbfcd9e9 (patch) | |
| tree | 7a0310a6cc94868c2d0a572b2afdf4bc209b3004 /include/linux/debugobjects.h | |
| parent | 212ed884a1aeefda22d87c270d082e4b0a95821f (diff) | |
| download | linux-d29bd8efe16239608b60173a7e8d842bcbfcd9e9.tar.xz | |
selftests/pipe: add pipe_bench microbenchmark
Add a small selftest that stresses pipe->mutex contention by spawning N
writer threads that hammer a single pipe with multi-page writes, plus M
reader threads that drain. Each writer records its own write() latency
samples into a log2-bucketed histogram; main aggregates and prints
total writes, throughput, average and percentile (p50/p99) latencies,
and the maximum observed latency.
Pass --memory-pressure to fork stress-ng (--vm 4 --vm-bytes 80%
--vm-method all) for the duration of the run, so alloc_page() in
anon_pipe_write() routinely hits direct reclaim. The flag fails
fast if stress-ng is not on $PATH.
Program print something like the following, for different writes,
readers, msgsizes and memory pressure:
config: writers=X readers=Y msgsize=Z duration=3 pipe_size=1048576
memory_pressure=[no|yes]
writes: total=54451 rate=18150/s
throughput_MBps: 1134.40
lat_avg_ns: 275355
lat_p50_ns_upper: 262143
lat_p99_ns_upper: 1048575
lat_max_ns: 2145633
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://patch.msgid.link/20260524-fix_pipe-v3-2-bb4a75d23a90@debian.org
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'include/linux/debugobjects.h')
0 files changed, 0 insertions, 0 deletions
