feat(diag): hitch flight recorder and non-blocking log (#361) - #362
Merged
Merged
Conversation
Log() now pushes into a lock-free queue and a below-normal writer thread does the disk I/O, so no thread waits on the disk or an EDR scan. Lines carry the QPC ms and thread id. Every tick records its wait, wake lateness, work, CPU time and spans; a long zoomed frame logs a classified hitch line plus a per-minute summary. Zoom-out teardown is timed per step. DiagLog and the txTrace dump no longer write from the tick thread. Threads are named. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
… shape spans Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #361. First step of the hitch logging review: today Wind can say a hitch happened, not why.
wind::Logpushes into a lock-free queue (src/log_queue.h); a below-normal writer thread writes, flushes on Warn/Error and rotates. No caller waits on the disk, an EDR scan or another thread. Lines gain the QPC ms (the PresentMon/ETW clock) and the thread id.hitchline (late-wake, compositor-late, pulse-thread-late, blocked/busy in X, flush-wait, loop-other) plus a per-minute summary. Pure logic insrc/hitch_record.*, unit-tested.txsession session endline.DiagLogand the txTrace dump no longer write from the tick thread. Threads are named for WPR.hitchLog=1,hitchThresholdPct=150. Version 0.23.0.Tests:
build.bat test569/569 pass;build.batandbuild.bat configbuild clean (pre-existing warnings only). The deployed signed UIAccess build starts and logs in the new format; hands-on zoom data not collected yet. Unsigned in CI as usual.Follow-ups: compositor watch after zoom-out, system context sampler, ETW markers plus a WPR capture script.
🤖 Generated with Claude Code
https://claude.ai/code/session_01KPUNAWcwghXdHCApcKKjSG