#[non_exhaustive]pub struct FudgedPair {
pub baseline_cgroup: String,
pub candidate_cgroup: String,
pub overlap: usize,
pub jaccard: f64,
pub baseline_residual: Vec<String>,
pub candidate_residual: Vec<String>,
pub cascaded_children: usize,
pub baseline_root: String,
pub candidate_root: String,
}Expand description
A pair of cgroup groups fudged together by thread population overlap. Fudging joins a baseline cgroup to a candidate cgroup when their per-cgroup thread-type sets share enough population (Jaccard similarity ≥ 0.90) — a renamed-but-otherwise-identical scope under a shifted path is rejoined for diffing instead of surfacing as separate orphans.
Fields are role-prefixed: baseline_* and candidate_* track
the two sides of the pair; overlap / jaccard /
cascaded_children are pair-level metrics.
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.baseline_cgroup: StringBaseline cgroup path of the matched pair — full join key
from the baseline-side bucket. Format: an absolute cgroup
path (e.g. /system.slice/foo.service). The form mirrors
what super::build_groups writes for super::GroupBy::Cgroup.
candidate_cgroup: StringCandidate cgroup path of the matched pair — full join key
from the candidate-side bucket. Same format as
Self::baseline_cgroup.
overlap: usizeNumber of (pcomm, comm) thread types in the intersection of the two sides’ thread-type sets. Higher = stronger match.
jaccard: f64Jaccard similarity coefficient: |A ∩ B| / |A ∪ B| over
the thread-type sets. Range [0.0, 1.0]. Matching gate is
jaccard >= 0.90 AND overlap (intersection) >= 10 (with
candidate set size >= 10).
baseline_residual: Vec<String>Thread types present in baseline but missing from the
UNION of every candidate matched against this baseline
(per-bcg dedup; see N:1 fudge merge). Each entry is
pcomm:comm formatted.
candidate_residual: Vec<String>Thread types present in candidate but missing from the
UNION of every baseline matched against this candidate.
Same format as Self::baseline_residual.
cascaded_children: usizeCount of cgroup descendants joined via cascade matching under the shared longest-common-suffix root. Cascade extends the fudge from the named pair down to children that share the same suffix relative to their roots.
baseline_root: StringCascade root on the baseline side: longest common
path-segment suffix stripped from
Self::baseline_cgroup. Equal to
Self::baseline_cgroup when no suffix is shared.
Smaps remap re-keys candidate-side smaps data under this
root.
candidate_root: StringCascade root on the candidate side: longest common
path-segment suffix stripped from
Self::candidate_cgroup. Equal to
Self::candidate_cgroup when no suffix is shared.
Trait Implementations§
Source§impl Clone for FudgedPair
impl Clone for FudgedPair
Source§fn clone(&self) -> FudgedPair
fn clone(&self) -> FudgedPair
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FudgedPair
impl Debug for FudgedPair
Source§impl Default for FudgedPair
impl Default for FudgedPair
Source§fn default() -> FudgedPair
fn default() -> FudgedPair
Auto Trait Implementations§
impl Freeze for FudgedPair
impl RefUnwindSafe for FudgedPair
impl Send for FudgedPair
impl Sync for FudgedPair
impl Unpin for FudgedPair
impl UnwindSafe for FudgedPair
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