#[non_exhaustive]pub struct Snapshot {Show 15 fields
pub rx_datagrams: u64,
pub rx_receives: u64,
pub rx_enobufs: u64,
pub rx_exhausted: u64,
pub tx_datagrams: u64,
pub tx_sends: u64,
pub tx_stalls: u64,
pub submissions: u64,
pub completions: u64,
pub enters: u64,
pub parks: u64,
pub wakes: u64,
pub timers_armed: u64,
pub timers_fired: u64,
pub timers_cancelled: u64,
}Expand description
A reading of one worker’s counters, all cumulative since it started.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.rx_datagrams: u64UDP datagrams received, counting each UDP_GRO coalesced segment.
rx_receives: u64Receive completions that delivered datagrams. rx_datagrams over this
is the GRO coalescing actually achieved.
rx_enobufs: u64Receives the kernel ended with ENOBUFS: the provided-buffer ring was
empty, so no buffer could be selected and the receive was never
performed. The datagram stays in the socket queue, so this is
receive-side backpressure rather than a confirmed loss; sustained, it
becomes one, once the socket buffer fills. The first thing to look at
when throughput sags.
rx_exhausted: u64Re-arms that found no free receive buffer at all, so the socket was left unarmed until a packet released one. The pool is at its ceiling and every buffer is held by an unread packet.
tx_datagrams: u64UDP datagrams sent, counting each UDP_SEGMENT segment of a GSO train.
tx_sends: u64sendmsg operations staged. tx_datagrams over this is the GSO
batching actually achieved.
tx_stalls: u64Times the send-buffer pool became drained at its ceiling and an acquisition had to wait. Send-side backpressure.
submissions: u64Submission queue entries the kernel accepted.
completions: u64Completion queue entries dispatched.
enters: u64io_uring_enter calls. Datagrams over this is the syscall amortization
the runtime exists for.
parks: u64Times the worker parked in io_uring_enter with nothing left to poll.
wakes: u64futex wakes another thread had to issue because the worker was parked.
timers_armed: u64Timers armed, re-arms included (a re-arm is a cancel plus an arm).
timers_fired: u64Timers that reached their deadline.
timers_cancelled: u64Timers dropped or re-armed before their deadline.
Implementations§
Trait Implementations§
impl Copy for Snapshot
impl Eq for Snapshot
impl StructuralPartialEq for Snapshot
Auto Trait Implementations§
impl Freeze for Snapshot
impl RefUnwindSafe for Snapshot
impl Send for Snapshot
impl Sync for Snapshot
impl Unpin for Snapshot
impl UnsafeUnpin for Snapshot
impl UnwindSafe for Snapshot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.