Skip to content

Add EventSource instrumentation for ProjectRootElementCache#13803

Draft
rainersigwald wants to merge 1 commit into
mainfrom
rainersigwald/project-root-element-cache-locking-revie
Draft

Add EventSource instrumentation for ProjectRootElementCache#13803
rainersigwald wants to merge 1 commit into
mainfrom
rainersigwald/project-root-element-cache-locking-revie

Conversation

@rainersigwald
Copy link
Copy Markdown
Member

Adds 19 ProjectRootElementCache* events (IDs 113-131) so a single PerfView capture can decompose where time is spent in the cache:

  • Get Start/Stop with outcome string (WeakHit, WeakHitInvalidated, PreserveFormattingReload, MissLoaded, MissAfterPerFileLockHit, Null) for hit/miss ratios

  • LockWait + LockHeld pairs around every lock(_locker) site, parameterized by operation, separating queue time from work-under-lock

  • Boost Start/Stop reporting linear scan depth, current strong-cache size, and whether the entry moved to front or was newly added

  • FileLockWait pair plus LoadDelegateInvoked/Completed counter for measuring per-file lock single-flight effectiveness

  • PreserveFormattingReload, AddedHandler, and IsInvalidEntry pairs to attribute work-under-lock to specific sub-operations

  • DiscardImplicitReferences single event reporting weak/strong sizes and retained counts

Telemetry only - no behavior change. Cache semantics, locking order, and ProjectRootElementAdded firing order are identical to before.

Documented under a new ProjectRootElementCache section in event-source.md.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Adds 19 ProjectRootElementCache* events (IDs 113-131) so a single PerfView capture can decompose where time is spent in the cache:

- Get Start/Stop with outcome string (WeakHit, WeakHitInvalidated, PreserveFormattingReload, MissLoaded, MissAfterPerFileLockHit, Null) for hit/miss ratios

- LockWait + LockHeld pairs around every lock(_locker) site, parameterized by operation, separating queue time from work-under-lock

- Boost Start/Stop reporting linear scan depth, current strong-cache size, and whether the entry moved to front or was newly added

- FileLockWait pair plus LoadDelegateInvoked/Completed counter for measuring per-file lock single-flight effectiveness

- PreserveFormattingReload, AddedHandler, and IsInvalidEntry pairs to attribute work-under-lock to specific sub-operations

- DiscardImplicitReferences single event reporting weak/strong sizes and retained counts

Telemetry only - no behavior change. Cache semantics, locking order, and ProjectRootElementAdded firing order are identical to before.

Documented under a new ProjectRootElementCache section in event-source.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant