summaryrefslogtreecommitdiffstats
path: root/desktop/modules/perf/test_perf.js
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-28 09:18:17 +0100
committerDanilo M. <danix@danix.xyz>2026-10-28 09:18:17 +0100
commit11c4c745c7ed5477c74abe7de3458924a0567a3a (patch)
tree1d5d5a522f4bd05fc60f37c87618c9c438bd4299 /desktop/modules/perf/test_perf.js
parentad0989dda8dc6420d16aaaa6aa40c47917145342 (diff)
downloadquickshell-11c4c745c7ed5477c74abe7de3458924a0567a3a.tar.gz
quickshell-11c4c745c7ed5477c74abe7de3458924a0567a3a.zip
perf: sum VRAM in a shell script instead of in QML
A process holding thousands of DRM fds makes the fdinfo scan a few hundred KB. Parsing that in QML every 2s drove Qt's unmanaged-heap counter to underflow, after which the V4 engine ran a GC on every allocation and the shell sat at 100% CPU. vram.sh does the scan and the per-client-id sum in awk and prints one number, or nothing when no xe client is found, which the panel draws as a dash. Perf.js loses vram() and its test; test_vram.sh carries the same cases against the script, which takes a file argument instead of scanning so the test can feed it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/perf/test_perf.js')
-rw-r--r--desktop/modules/perf/test_perf.js20
1 files changed, 1 insertions, 19 deletions
diff --git a/desktop/modules/perf/test_perf.js b/desktop/modules/perf/test_perf.js
index b7d9dbb..7c108a8 100644
--- a/desktop/modules/perf/test_perf.js
+++ b/desktop/modules/perf/test_perf.js
@@ -18,7 +18,7 @@ const assert = require("assert");
const src = fs.readFileSync(__dirname + "/Perf.js", "utf8")
.replace(/^\.pragma library$/m, "");
-const P = new Function(src + "\nreturn { cpuTimes, load, meminfo, df, vram, rate, " +
+const P = new Function(src + "\nreturn { cpuTimes, load, meminfo, df, rate, " +
"hwmonMap, lanAddr, cpuModel, du, band, worst, isIPv4, parsePubip, formatPubip, " +
"ipCheck, due, push, bytes, speed, procs, sockets, netProcs };")();
@@ -62,24 +62,6 @@ assert.strictEqual(d[1].host, "192.0.2.11");
assert.strictEqual(d[1].mount, "/mnt/nfs/Library");
assert.deepStrictEqual(P.df(""), []);
-// vram: summed once per xe client id, units honoured, other drivers ignored.
-const fd = [
- "/proc/1/fdinfo/7:drm-driver:\txe",
- "/proc/1/fdinfo/7:drm-client-id:\t38",
- "/proc/1/fdinfo/7:drm-resident-vram0:\t1024 KiB",
- "/proc/1/fdinfo/10:drm-driver:\txe",
- "/proc/1/fdinfo/10:drm-client-id:\t38",
- "/proc/1/fdinfo/10:drm-resident-vram0:\t1024 KiB",
- "/proc/2/fdinfo/5:drm-driver:\txe",
- "/proc/2/fdinfo/5:drm-client-id:\t40",
- "/proc/2/fdinfo/5:drm-resident-vram0:\t2 MiB",
- "/proc/3/fdinfo/4:drm-driver:\tamdgpu",
- "/proc/3/fdinfo/4:drm-client-id:\t1",
- "/proc/3/fdinfo/4:drm-resident-vram0:\t9 GiB",
-].join("\n");
-assert.strictEqual(P.vram(fd), 1024 * 1024 + 2 * 1024 * 1024);
-assert.strictEqual(P.vram(""), null);
-
// rate: bytes per second; a counter that went backwards is null.
assert.strictEqual(P.rate(1000, 3000, 2), 1000);
assert.strictEqual(P.rate(3000, 1000, 1), null);