A full queue sheds load instead of blocking the sampler
CPU and memory are sampled on a dedicated OS thread, because reading /proc is blocking work that does not belong on the async runtime. Each reading goes into a bounded mpsc channel with try_send, and a Tokio task drains it.
On TrySendError::Full the event is dropped with a warning and the sampler keeps its cadence. Memory stays flat no matter how slow the consumer gets, and a dedicated test fills the channel on purpose to prove the sampler never panics or stalls.












