#[non_exhaustive]pub struct PerNodeNumaStats {
pub node: u32,
pub numa_hit: u64,
pub numa_miss: u64,
pub numa_foreign: u64,
pub numa_interleave_hit: u64,
pub numa_local: u64,
pub numa_other: u64,
}Expand description
Per-node NUMA event counters captured from
pglist_data->node_zones[]->vm_numa_event[] at freeze time.
Each row is one row of NUMA event counters summed across all
zones on a single node. The six counters mirror the kernel’s
enum numa_stat_item (see super::btf_offsets::NUMA_HIT
etc. for the enum-stable indices). All counters are
monotonic-since-boot; consumers diff against a baseline (or
against another node’s row) to extract the test-window delta.
Diagnostic value for sched_ext stalls is informational only — the NUMA balancer is not active for ext tasks. The rows surface here so an operator triaging a NUMA-aware workload (e.g. a memory-tiering test) can verify the kernel actually observed the expected node-locality distribution.
Live walker status: the wire shape, BTF offsets
(super::btf_offsets::NumaStatsOffsets), and report field
are wired through. The actual host-side walker that resolves
node_data[] and reads per-zone counters is pending; until it
lands, the report’s FailureDumpReport::per_node_numa vec
stays empty and
FailureDumpReport::per_node_numa_unavailable carries the
"no NUMA walker" reason.
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.node: u32NUMA node id this row describes.
numa_hit: u64vm_numa_event[NUMA_HIT] summed across zones — pages
allocated on the requested node when local was preferred.
numa_miss: u64vm_numa_event[NUMA_MISS] — local node full, allocation
landed on a non-local node.
numa_foreign: u64vm_numa_event[NUMA_FOREIGN] — process-policy targeted a
different node, this node honored the policy.
numa_interleave_hit: u64vm_numa_event[NUMA_INTERLEAVE_HIT] — interleave policy
allocations that landed on this node.
numa_local: u64vm_numa_event[NUMA_LOCAL] — allocations on this node by
processes running on this node.
numa_other: u64vm_numa_event[NUMA_OTHER] — allocations on this node by
processes running on a different node.
Trait Implementations§
Source§impl Clone for PerNodeNumaStats
impl Clone for PerNodeNumaStats
Source§fn clone(&self) -> PerNodeNumaStats
fn clone(&self) -> PerNodeNumaStats
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PerNodeNumaStats
impl Debug for PerNodeNumaStats
Source§impl Default for PerNodeNumaStats
impl Default for PerNodeNumaStats
Source§fn default() -> PerNodeNumaStats
fn default() -> PerNodeNumaStats
Source§impl<'de> Deserialize<'de> for PerNodeNumaStats
impl<'de> Deserialize<'de> for PerNodeNumaStats
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for PerNodeNumaStats
impl RefUnwindSafe for PerNodeNumaStats
impl Send for PerNodeNumaStats
impl Sync for PerNodeNumaStats
impl Unpin for PerNodeNumaStats
impl UnwindSafe for PerNodeNumaStats
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more