selftests/pipe: add pipe_bench microbenchmarkAdd a small selftest that stresses pipe->mutex contention by spawning Nwriter threads that hammer a single pipe with multi-page writes, plus Mreader t
selftests/pipe: add pipe_bench microbenchmarkAdd a small selftest that stresses pipe->mutex contention by spawning Nwriter threads that hammer a single pipe with multi-page writes, plus Mreader threads that drain. Each writer records its own write() latencysamples into a log2-bucketed histogram; main aggregates and printstotal 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() inanon_pipe_write() routinely hits direct reclaim. The flag failsfast 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: 2145633Reviewed-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.orgSigned-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
show more ...