mirror of
https://github.com/RhapsodiOS/RhapsodiOS.git
synced 2026-11-03 22:01:40 -07:00
[GH-ISSUE #89] stress: vm pressure always times out on a 512 MB guest #82
Labels
No labels
bug
documentation
enhancement
enhancement
good first issue
help wanted
help wanted
pull-request
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
github-starred/RhapsodiOS#82
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @raynorpat on GitHub (Oct 31, 2026).
Original GitHub issue: https://github.com/RhapsodiOS/RhapsodiOS/issues/89
Originally assigned to: @raynorpat on GitHub.
Final retest of ffs-perf
23c1dd5f6(vm/work/final2-retest/).stress-vm pressure(src/Commands/stress/vm/vm.c~32-36: every worker holds its share of 1.5× RAM, or-m, and keeps touching it) times out at the 600 s watchdog every time on a 512 MB guest:check-run,run 1, and 3 of 3 solo reruns (seed 1793415145). On a 128 MB guest it finishes in 150-180 s. It has failed this way in every 512 MB run since phase 4.Paging 1.5× of 512 MB (768 MB) through swap on QEMU TCG simply takes longer than 600 s. The test isn't finding a kernel bug here: the swap file grows normally (to about 420-615 MB in the #85 runs) and nothing panics or corrupts.
Expected
vm pressurepasses on any guest size within the watchdog. Options:-Tbudget scale with the working set so the test ends PASS once it has paged the whole set N times;It must still force real paging (working set > RAM) and still detect data corruption. Record the chosen size in the README.
@raynorpat commented on GitHub (Oct 31, 2026):
Fixed by
b19dd8e1band63e9efc43, merged into ffs-perf in6314afce8, by scaling the time budget with RAM. The working set is unchanged: still 1.5× RAM, or-m.Measured first on the base code with
-t 6000, 4 procs:Rule: pressure's watchdog is the applicable
-t(default 600) × ⌈working set / 192 MB⌉.-tapplies, sorun -tandstress_fs.sh's msdos-t 1500scale too.alarm()runs inrun()(lib/main.c). It learns the scale from a new optionalscalehook instruct st_test. Pressure sets it tos_pressure, which uses the samepressure_bytes()that sizes the test's buffer. All other tests leave it NULL.check-vmchecks that-t 1 -m 400m pressuretimes out atsecs=3.Harness:
STRESS_RUN_LIMIT_Sis nowstress_run_limit(MEM_MB)= 4 h × ⌈MEM_MB / 128⌉ (16 h on 512 MB). It's only a backstop: a dead guest is still caught after 5 failed polls. A unit test was added, andtest_ffsbench.pypasses.Verified on the base kernel (cksum 2686302031):
-t 1reportssecs=1on 128 MB andsecs=4on 512 MB.-xrun with the full working set still FAILs on the injected offset on both guests.make check,check-vm,check-runrc=0 on both. On 512 MB, check-run's vm summary has FAIL=0.Left open:
t_pressure's 1.5× RAM sum would overflow on a guest with about 2.7 GB of RAM or more. That predates this change.