sysstats: refresh cpuFreq every 3rd tick instead of every tick

/proc/cpuinfo is regenerated in full by the kernel on every read and
its cost grows with core count, making it the priciest per-tick read.
Bar frequency display doesn't need 1 Hz precision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 21:42:02 +02:00
parent 6655c9c500
commit f6796f3726

View File

@@ -52,6 +52,12 @@ Singleton {
// poll interval in seconds
readonly property int interval: 1
// cpuFreq comes from /proc/cpuinfo, which the kernel regenerates in full on
// every read (cost grows with core count) — the priciest per-tick read here.
// Frequency on a status bar doesn't need 1 Hz precision, so only refresh it
// every Nth tick instead of on the CPU%/mem hot path.
readonly property int freqEveryTicks: 3
// discovered sysfs paths (filled once by discover.sh)
property string tempPath: ""
property string batPath: ""
@@ -271,15 +277,17 @@ Singleton {
}
function _tickOnce() {
const doFreq = root._tick % root.freqEveryTicks === 0;
statView.reload();
cpuInfoView.reload();
if (doFreq) cpuInfoView.reload();
memView.reload();
routeView.reload();
if (root.tempPath) tempView.reload();
if (root.batPath) { batCapView.reload(); batStatusView.reload(); }
_parseCpu();
_parseFreq();
if (doFreq) _parseFreq();
_parseMem();
_parseTemp();
_parseBattery();