Repository navigation
Conversation
The process monitor fed the leak detector with resident size from ps. Resident size also counts pages a process has freed and the system has not reclaimed yet, so a process that allocates and frees a lot shows a resident size that climbs for hours while its footprint stays flat. The app flagged itself that way: with the monitor open it was at 600 MB resident, 180 to 216 MB footprint and 135 KB of real leaks after seven hours. The series now holds each app's physical footprint (proc_pid_rusage), with resident size only for processes of other users, which do not report it. LeakHistory takes one reading every ten seconds instead of one per refresh and trims in place, so a series stays under two hundred points; before, every refresh rebuilt about 1500 points for each of some 600 apps, around 14 MB of allocation churn a second, which is what kept the resident size climbing in the first place. Tests cover the footprint reading, the sampling interval, the window and the verdicts: a steady footprint is no leak whatever resident size does, and a climbing one is still caught.
The widgets live in the System panel's usage block, and that block asked the classic CPU and GPU cards' switches whether to show. With both cards hidden and the widget style chosen, the panel showed no widgets at all. The block now asks the widgets' own switches, through a rule that also drops the cards of a metric family the hub has turned off. The widgets' process lists were read when the view appeared and on the service's notification, which only fires after someone asks, so they kept the rows from the moment the panel opened. They now read on the monitor's beat at the interval from Settings, only for the cards on screen and only while the panel is on the System section, and they skip the state write when the rows did not change. Also in the widgets: temperatures follow the unit from Settings, a missing frequency shows nothing instead of 0.0 GHz, app icons come from the shared cache instead of a lookup per row per redraw, the core grid dims with its CPU card while arranging, and Reset restores the widget cards and their order. In the widget style the edit mode no longer lists the classic Temperatures and Memory blocks, whose switches did nothing there. Tests cover the visibility and family rules, the refresh interval and which lists are read.
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.
1.82.2: the widget style answers to its own switches
No kext changes (kexts stay at 3.40.1).
Fixed
Improved
1.82.1: leak warnings judged by physical footprint
No kext changes (kexts stay at 3.40.1).
Fixed
Improved
Verification
./build.sh --test: 22361 checks OK.