feat(hardening): CPU/IO slice isolation for background services #12
Open
s8n
wants to merge 1 commit from
feat/cpu-io-slice-isolation into feat/memory-pressure-tuning
pull from: feat/cpu-io-slice-isolation
merge into: veilor-org:feat/memory-pressure-tuning
veilor-org:main
veilor-org:fix/preload-uas-module
veilor-org:feat/memory-pressure-tuning
veilor-org:v0.7-bluebuild-spike
veilor-org:backup/pre-rename-2026-05-07/v0.7-bluebuild-spike
veilor-org:backup/pre-rename-2026-05-07/main
veilor-org:backup/pre-rename-2026-05-07/feat/runner-fix-node20-pinning
veilor-org:feat/runner-fix-node20-pinning
veilor-org:backup/pre-rename-2026-05-07/feat/a1-forgejo-ci-adapt
veilor-org:feat/a1-forgejo-ci-adapt
veilor-org:backup/pre-rename-2026-05-07/feat/sec-apparmor-v06-stubs
veilor-org:feat/sec-apparmor-v06-stubs
veilor-org:backup/pre-rename-2026-05-07/feat/sec-threat-model-polish
veilor-org:feat/sec-threat-model-polish
veilor-org:backup/pre-rename-2026-05-07/feat/runner-fix-docker-sock-and-node20
veilor-org:feat/runner-fix-docker-sock-and-node20
veilor-org:backup/pre-rename-2026-05-07/feat/sre-cosign-sbom-attestation
veilor-org:feat/sre-cosign-sbom-attestation
veilor-org:backup/pre-rename-2026-05-07/feat/docs-test-run-v0.5.32
veilor-org:feat/docs-test-run-v0.5.32
veilor-org:backup/pre-rename-2026-05-07/feat/docs-method-changelog-forgejo
veilor-org:backup/pre-rename-2026-05-07/feat/ux-installer-v06-polish
veilor-org:feat/docs-method-changelog-forgejo
veilor-org:feat/ux-installer-v06-polish
veilor-org:backup/pre-rename-2026-05-07/feat/a1-bluebuild-pin
veilor-org:feat/a1-bluebuild-pin
veilor-org:backup/pre-rename-2026-05-07/feat/docs-readme-forgejo
veilor-org:feat/docs-readme-forgejo
veilor-org:backup/pre-rename-2026-05-07/feat/build-auto-install-test
veilor-org:feat/build-auto-install-test
veilor-org:backup/pre-rename-2026-05-07/feat/ux-installer-gum-v051
veilor-org:feat/ux-installer-gum-v051
veilor-org:backup/pre-rename-2026-05-07/feat/build-v05-gum-graft
veilor-org:feat/build-v05-gum-graft
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a58570fcad8267774
veilor-org:worktree-agent-a58570fcad8267774
veilor-org:backup/pre-rename-2026-05-07/feat/build-v06-cli-tools
veilor-org:feat/build-v06-cli-tools
veilor-org:backup/pre-rename-2026-05-07/feat/sre-fix-shellcheck-tuned
veilor-org:feat/sre-fix-shellcheck-tuned
veilor-org:backup/pre-rename-2026-05-07/feat/build-v03-wiring
veilor-org:feat/build-v03-wiring
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a26f5b1b693c96469
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a771d00c8c021d106
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-acca710603573e9d0
veilor-org:worktree-agent-a26f5b1b693c96469
veilor-org:worktree-agent-a771d00c8c021d106
veilor-org:worktree-agent-acca710603573e9d0
veilor-org:backup/pre-rename-2026-05-07/feat/ux-installer-assets
veilor-org:feat/ux-installer-assets
veilor-org:backup/pre-rename-2026-05-07/feat/sre-fix-brand-lint
veilor-org:feat/sre-fix-brand-lint
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a58c74edcfad211cb
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-ad14237bc3b7986eb
veilor-org:worktree-agent-a58c74edcfad211cb
veilor-org:worktree-agent-ad14237bc3b7986eb
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a29df459f63568ed8
veilor-org:worktree-agent-a29df459f63568ed8
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-aeb7695cc1b294236
veilor-org:worktree-agent-aeb7695cc1b294236
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a0b3704687c5d0876
veilor-org:worktree-agent-a0b3704687c5d0876
veilor-org:backup/pre-rename-2026-05-07/feat/sre-release-signing
veilor-org:feat/sre-release-signing
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a304f853c4ef28acc
veilor-org:backup/pre-rename-2026-05-07/worktree-agent-a889fae99e2c827e4
veilor-org:worktree-agent-a304f853c4ef28acc
veilor-org:worktree-agent-a889fae99e2c827e4
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference: veilor-org/veilor-os#12
Reference in a new issue
No description provided.
Delete branch "feat/cpu-io-slice-isolation"
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?
Companion to
7d2b94b(memory-pressure tuning). Found live on a 24-thread Ryzen AI 9 HX 370 / 30 GiB workstation 2026-05-13: load avg climbed to 6.5 ~16 min after login, typing in konsole / address bar lagged 100s of ms. RAM/swap uncontended — pure CPU contention (PSI cpu some=0.34).Root cause: every Fedora unit ships with
CPUWeight=[not set]→ defaults to 100. Under contention the scheduler splits CPU evenly between every leaf cgroup, sokwin_waylandandplasmashelllost scheduling fights topackagekitd+plasma-discover --mode update+fwupd-refresh+dnf-makecacherunning concurrently.Three fixes:
system-bg.slice—CPUWeight=20,IOWeight=50,MemoryHigh=4G. Five service drop-ins assign packagekit, fwupd, fwupd-refresh, dnf-makecache, dnf5-automatic withNice=10,IOSchedulingClass=idle.user-.slice.d/10-boost.conf—CPUWeight=300,IOWeight=200for every logged-in session. Net 15:1 interactive:background ratio under contention.dnf-makecache.timerOnBootSec=20minpushes refresh past peak bring-up.Opt-in artifact for users adding cloud-sync tools: skel
user-bg.slice(CPUWeight=30). Drop aSlice=user-bg.slicedrop-in on Syncthing / rclone / file-indexer service to inherit.Verified live before opening this PR:
systemd-cgls:packagekit.servicelives under/system.slice/system-bg.slice/,syncthing.serviceunder/user.slice/.../user-bg.slice/Follow-ups documented in CHANGELOG (not in this PR):
tuned-adm profile onyx-performancesilently falls back tobalanced(no errors logged). Needs CI smoke-test that assertstuned-adm activematches request.balance_performancedespite system on AC + charging. ManualEPP=performance+throughput-performanceprofile restored snappy input. Long-term: charging-aware tuned hook.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENTflood on hybrid NVIDIA RTX 4070 + AMD Radeon 890M. Cleared on session restart. Possibly KWin 6.6.4 + nvidia 580.159.03 specific.Base branch is
feat/memory-pressure-tuning(the immediate parent). Net diff for this PR is exactly the slice additions.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.