#[non_exhaustive]pub struct CompareOptions {
pub group_by: GroupByOrDefault,
pub cgroup_flatten: Vec<String>,
pub no_thread_normalize: bool,
pub no_cg_normalize: bool,
pub sort_by: Vec<SortKey>,
}Expand description
Options controlling compare.
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.group_by: GroupByOrDefault§cgroup_flatten: Vec<String>Glob patterns that collapse dynamic cgroup path segments
to a canonical form before grouping. Tried in listed
order; the first pattern that matches a thread’s cgroup
path replaces the whole path with the pattern string, so
paths differing only in wildcard-matched segments collapse
onto one key. A path matching no pattern is returned
verbatim. See flatten_cgroup_path for the rewrite rule
and examples.
Independent of Self::no_cg_normalize — explicit
glob patterns apply first; auto-normalization (token-based)
runs after, gated by no_cg_normalize.
no_thread_normalize: boolWhen true, disable token-based pattern normalization
across every name-family axis: GroupBy::Comm,
GroupBy::Pcomm, AND the smaps_rollup keying in
collect_smaps_rollup (which keys by
pattern_key(&t.pcomm) under default normalization, but
reverts to literal pcomm[tgid] when this flag is set so
each PID stays attributable).
Under this flag: threads / processes group by their
literal name; smaps rows preserve their per-PID identity.
The pure-digit/hex/alpha+digits placeholders never fire on
any of those axes. Mirror of Self::no_cg_normalize for
the thread / process axes. Has no effect under
GroupBy::CommExact (already literal) or
GroupBy::Cgroup.
no_cg_normalize: boolWhen true, disable token-based pattern normalization for
cgroup-path grouping (GroupBy::Cgroup). Cgroup paths
group by their literal post-flatten path (no Layer 1, 2,
or 3 substitutions). Explicit cgroup_flatten glob
patterns still apply. Has no effect under other groupings.
sort_by: Vec<SortKey>Multi-key sort spec for the diff rows. When non-empty,
overrides the default delta_pct desc sort. Each
SortKey names one metric from
CTPROF_METRICS or CTPROF_DERIVED_METRICS
and a direction; groups rank by the tuple
(metric_1_delta, metric_2_delta, …) under
lexicographic order with per-key direction. Within a
group, rows appear in registry order. The sort
composes with Self::group_by: groups are formed under
the chosen axis (pcomm / cgroup / comm / comm-exact) and
then ranked by their aggregated metric values, so the
same sort_by spec works under every grouping. See
parse_sort_by for the CLI string parser.
Trait Implementations§
Source§impl Clone for CompareOptions
impl Clone for CompareOptions
Source§fn clone(&self) -> CompareOptions
fn clone(&self) -> CompareOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompareOptions
impl Debug for CompareOptions
Source§impl Default for CompareOptions
impl Default for CompareOptions
Source§fn default() -> CompareOptions
fn default() -> CompareOptions
Auto Trait Implementations§
impl Freeze for CompareOptions
impl RefUnwindSafe for CompareOptions
impl Send for CompareOptions
impl Sync for CompareOptions
impl Unpin for CompareOptions
impl UnwindSafe for CompareOptions
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