Skip to main content

Counts

Struct Counts 

Source
#[non_exhaustive]
pub struct Counts {
Show 57 fields pub dir_opens: u64, pub dir_enumeration_calls: u64, pub dir_entries: u64, pub stats: u64, pub file_opens: u64, pub file_reads: u64, pub bytes_read: u64, pub allocs: u64, pub reallocs: u64, pub frees: u64, pub bytes_allocated: u64, pub upserts: u64, pub parent_resolutions: u64, pub parent_memo_hits: u64, pub rollup_merges: u64, pub control_reads: u64, pub control_refused: u64, pub control_sources_shared: u64, pub ignore_patterns_tested: u64, pub ignore_bucket_probes: u64, pub ignore_bucket_hits: u64, pub entries_allocated: u64, pub baseline_batches: u64, pub baseline_accepted_ops: u64, pub opened_batches: u64, pub opened_accepted_ops: u64, pub public_batches: u64, pub public_accepted_ops: u64, pub ancestry_overlay_inserts: u64, pub ancestry_path_comparisons: u64, pub ancestry_parent_proofs: u64, pub scanner_prepare_us: u64, pub scanner_control_projection_us: u64, pub scanner_reduce_us: u64, pub content_sidecar_read_us: u64, pub content_sidecar_parse_us: u64, pub content_sidecar_candidates_us: u64, pub content_sidecar_apply_us: u64, pub detached_builds: u64, pub detached_entries: u64, pub detached_walk_us: u64, pub detached_finish_us: u64, pub effect_paths: u64, pub effect_path_bytes: u64, pub impact_candidates: u64, pub impact_ancestor_visits: u64, pub impact_retained_dirty_paths: u64, pub impact_all_dirty: u64, pub journal_retained_commits: u64, pub journal_cloned_commits: u64, pub journal_oversized_commits: u64, pub journal_dropped_commits: u64, pub adaptive_calibration_chunks: u64, pub adaptive_calibration_entries: u64, pub adaptive_calibration_work_us: u64, pub adaptive_scale_ups: u64, pub adaptive_policy_undecided: u64,
}
Expand description

Per-layer tallies for a walk, index build, and content pass.

Non-exhaustive, so a later counter is an additive change: outside this crate, build one with Counts::default and read or assign its fields, rather than with a struct literal or an exhaustive destructure (fdu-8f6k).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§dir_opens: u64

Logical directory-open operations.

§dir_enumeration_calls: u64

Enumeration syscalls in complete successful native listings — macOS bulk and Linux getdents64 — including the empty terminator.

One successful directory is typically two calls (one data, one EOF). The portable read_dir path leaves this at 0 because the standard library hides that split. Abandoned native attempts before portable fallback are not counted, so this can be compared to dir_opens without another sample.

§dir_entries: u64

Directory entries yielded by enumeration.

§stats: u64

Logical metadata-stat operations.

The Linux native reader also counts the stat it makes for a DT_UNKNOWN directory or symlink on the summary route; the portable path’s file_type fallback makes the same stat uncounted.

§file_opens: u64

File-open operations performed by content analysis.

§file_reads: u64

File read calls performed by content analysis.

§bytes_read: u64

Bytes read from files by content analysis.

§allocs: u64

Allocation requests observed by the installed counting allocator.

§reallocs: u64

Reallocation requests observed by the installed counting allocator.

§frees: u64

Deallocations observed by the installed counting allocator.

§bytes_allocated: u64

Bytes requested by allocations and allocation growth.

§upserts: u64

Index upserts applied.

§parent_resolutions: u64

Parent-path resolutions performed for index updates.

§parent_memo_hits: u64

Parent resolutions served by the adjacent-parent memo.

§rollup_merges: u64

Roll-up merge operations.

§control_reads: u64

Control files read from the filesystem.

§control_refused: u64

Control sources a control table refused for one of its limits.

Counted where the table decides, so a re-read of a file it has already refused is not: that batch cannot change the table and is never projected. A warm revalidate of a refused tree therefore reports its reads against no refusals, which is the projection being skipped rather than a refusal being lifted.

§control_sources_shared: u64

Control sources that joined a retained identical content instead of parsing again.

§ignore_patterns_tested: u64

.gitignore rules whose glob was tested against an entry: the rules an entry met that no lookup or cheap check on its name could decide (H171).

§ignore_bucket_probes: u64

Lookups of an entry’s name in a .gitignore file’s indexed rules: one per literal-name table and extension table consulted, and one per ends-with rule without a . compared.

§ignore_bucket_hits: u64

Those lookups that found a rule matching the entry.

§entries_allocated: u64

Index entries allocated.

§baseline_batches: u64

Successful detached baseline batches arbitrated by the index.

§baseline_accepted_ops: u64

Operations accepted from successful detached baseline batches.

§opened_batches: u64

Successful opened-root batches arbitrated by the index.

§opened_accepted_ops: u64

Operations accepted from successful opened-root batches.

§public_batches: u64

Successful arbitrary public batches arbitrated by the index.

§public_accepted_ops: u64

Operations accepted from successful arbitrary public batches.

§ancestry_overlay_inserts: u64

Path-keyed structural-overlay inserts during ancestry preflight.

§ancestry_path_comparisons: u64

Same-parent path comparisons during ancestry preflight.

§ancestry_parent_proofs: u64

Parent chains proved during ancestry preflight, including memo hits.

§scanner_prepare_us: u64

Wall microseconds spent preparing trusted scanner batches.

§scanner_control_projection_us: u64

Wall microseconds spent projecting controls for trusted scanner batches.

§scanner_reduce_us: u64

Wall microseconds spent reducing prepared scanner batches into the index.

§content_sidecar_read_us: u64

Wall microseconds spent reading the content sidecar image.

§content_sidecar_parse_us: u64

Wall microseconds spent on sidecar integrity and record decode.

§content_sidecar_candidates_us: u64

Wall microseconds spent building the live candidate map for a sidecar restore.

§content_sidecar_apply_us: u64

Wall microseconds spent applying restored records and rebuilding content roll-ups.

§detached_builds: u64

Detached cold scans that selected the directory-group builder.

§detached_entries: u64

Entries consumed by that builder.

§detached_walk_us: u64

Wall microseconds spent walking while the builder consumed directory groups.

§detached_finish_us: u64

Wall microseconds spent in the final directories-only roll-up pass.

§effect_paths: u64

Owned paths retained in exact effective changes.

§effect_path_bytes: u64

Native encoded bytes retained by exact effective-change paths.

§impact_candidates: u64

Change and state paths considered for bounded impact derivation.

§impact_ancestor_visits: u64

Path ancestors visited while deriving bounded impact.

§impact_retained_dirty_paths: u64

Dirty paths retained in completed bounded impacts.

§impact_all_dirty: u64

Impact derivations that crossed the dirty-path bound.

§journal_retained_commits: u64

Exact commits retained in the bounded journal.

§journal_cloned_commits: u64

Exact commits cloned for attempted journal retention.

§journal_oversized_commits: u64

Exact commits rejected because one commit exceeded journal capacity.

§journal_dropped_commits: u64

Older exact commits dropped to admit a new retained commit.

§adaptive_calibration_chunks: u64

Chunk releases folded into an automatic scan’s worker-scaling calibration.

§adaptive_calibration_entries: u64

Entries folded into that calibration before it reached a decision.

§adaptive_calibration_work_us: u64

Worker time, in microseconds, folded into that calibration.

Microseconds rather than nanoseconds because the decision threshold is expressed per entry in microseconds, and a nanosecond total over a multi-million-entry walk is large enough to make the row hard to read.

§adaptive_scale_ups: u64

Reserve-pool expansions an automatic scan actually performed.

§adaptive_policy_undecided: u64

Walks that ended while their scaling calibration was still undecided.

A walk shorter than the calibration window never observes enough entries to decide, so its worker policy is unobservable rather than merely unchanged. That is the distinction crate::scan fails closed on, and it must not read as a decision to hold.

Implementations§

Source§

impl Counts

Source

pub fn rows(&self) -> Vec<(&'static str, &'static str, u64)>

Every counter as (group, label, value), in report order.

Source

pub fn is_empty(&self) -> bool

Whether every counter is zero.

Source

pub fn per(&self, denominator: u64) -> Vec<(&'static str, &'static str, f64)>

Per-event ratios against a denominator, in report order.

Trait Implementations§

Source§

impl Clone for Counts

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Counts

Source§

impl Debug for Counts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Counts

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Counts

Source§

impl PartialEq for Counts

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Counts

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.