BufferResource::reserve() (cpp/include/rapidsmpf/memory/buffer_resource.hpp) computes an overbooking_bytes value per call that nearly every caller discards, including reserve_or_wait (cpp/src/streaming/core/memory_reserve_or_wait.cpp). Worse, the forced-progress/timeout path, the actual signal that a task is stuck waiting on memory pressure, is entirely silent. No counter, no stat, no NVTX.
This is probably the most important gap for I/O concurrency tuning right now. It's the missing half of "was this I/O task slow because of the network, or because it was blocked behind a memory reservation," which is exactly the ambiguity that would make a naive latency-only read of a sweep result wrong. Add counters for reservation attempts/successes/forced-progress-timeouts and cumulative wait time, using the same Statistics pattern as #1166.
BufferResource::reserve()(cpp/include/rapidsmpf/memory/buffer_resource.hpp) computes anoverbooking_bytesvalue per call that nearly every caller discards, includingreserve_or_wait(cpp/src/streaming/core/memory_reserve_or_wait.cpp). Worse, the forced-progress/timeout path, the actual signal that a task is stuck waiting on memory pressure, is entirely silent. No counter, no stat, no NVTX.This is probably the most important gap for I/O concurrency tuning right now. It's the missing half of "was this I/O task slow because of the network, or because it was blocked behind a memory reservation," which is exactly the ambiguity that would make a naive latency-only read of a sweep result wrong. Add counters for reservation attempts/successes/forced-progress-timeouts and cumulative wait time, using the same
Statisticspattern as #1166.