Skip to content

perf: 1.0 (installed 362 tree) idles at ~30 % CPU with every window hidden — main thread redrawing, nothing in the log #356

Description

@kpmmmurphy

Seen 2026-09-15 22:03 (launch night), while preparing a quiet baseline for the power receipt (#353)

/Applications/M1K3.app (the 362 tree, launched 14:05, 8 h uptime, Lil resident, MCP server on) at 30–38 % CPU by top over several 2–3 s samples, with visible set to false on the process (every window ordered out) and get_status reporting nothing in flight (not speaking, no mic, not answering). Resident 5.1 GB. log show --last 3m --predicate 'subsystem == "app.m1k3"' printed no lines at all — whatever this is, it is silent.

Per thread (ps -M): main thread ~16 % (priority 46T), two young worker threads ~11 % and ~10 % (each with only ~6 s of lifetime CPU — spawned recently), a fourth at ~4 %.

Hottest non-wait leaf frames (sample M1K3 5, sort by top of stack): _dispatch_timer_heap_resift (466), RB::SurfacePool::collect (RenderBox, 70), CABackingStoreCollect_ (62), _dispatch_source_invoke (72) — everything else is __psynch_cvwait / semaphore_wait_trap (the usd/tbb pools parked). Reads as SwiftUI redrawing something on a timer while nothing is visible.

Earlier the same evening, with the main window on screen, top read M1K3 at ~49 % beside WindowServer at ~51 %.

Why it matters

#293 (2026-09-12) measured the fanless idle at 0.4–1.8 % on the merged build with the same defaults (HUD on, companion set). Either 1.0 regressed between #293 and #340, or a setting on this Mac (notch HUD, menu-bar pet, screensaver poll, heartbeat) reintroduced a per-frame loop. It is also the eco story's own receipt: an idle M1K3 that burns a third of a core is not a resident, it is a fan.

First moves

  1. Reproduce on a fresh launch of the installed build: top -pid for 60 s with the window hidden, then toggle notch HUD / menu-bar creature / heartbeat one at a time.
  2. sample with the window hidden and match the timer against MenuBarLabel / AudioCaptureBackdrop (TimelineView capped at 30 fps in perf(avatar): unmount hidden RealityViews, pause the rest — a fanless idle (33-49% → <2% CPU) #293 — a cap is still 30 redraws a second if the view is mounted) and the notch HUD's drive loop (NotchHUDVisibility.wakeValve).
  3. Compare against perf(avatar): unmount hidden RealityViews, pause the rest — a fanless idle (33-49% → <2% CPU) #293's method (sample DisplayLink count + top), not heap.

Found while measuring, not fixed here — the power receipt's idle window will carry whatever this costs until it is.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions