chore: updated guide with more custom nice rules
This commit is contained in:
@@ -195,7 +195,8 @@ yay -S cachyos-ananicy-rules-git # Community rules
|
|||||||
sudo systemctl enable --now ananicy-cpp
|
sudo systemctl enable --now ananicy-cpp
|
||||||
```
|
```
|
||||||
|
|
||||||
Now add custom rules for package management and compilation:
|
Now add custom rules. First, demote background tasks that shouldn't freeze your
|
||||||
|
desktop:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo tee /etc/ananicy.d/package-managers.rules << 'EOF'
|
sudo tee /etc/ananicy.d/package-managers.rules << 'EOF'
|
||||||
@@ -212,12 +213,40 @@ sudo tee /etc/ananicy.d/package-managers.rules << 'EOF'
|
|||||||
{"name": "cargo", "type": "BG_CPUIO"}
|
{"name": "cargo", "type": "BG_CPUIO"}
|
||||||
{"name": "ninja", "type": "BG_CPUIO"}
|
{"name": "ninja", "type": "BG_CPUIO"}
|
||||||
{"name": "make", "type": "BG_CPUIO"}
|
{"name": "make", "type": "BG_CPUIO"}
|
||||||
|
|
||||||
|
# Coredump processing - can churn through 100MB+ dumps
|
||||||
|
{"name": "systemd-coredump", "type": "BG_CPUIO"}
|
||||||
|
{"name": "coredumpctl", "type": "BG_CPUIO"}
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
The `BG_CPUIO` type sets `nice=16`, `ioclass=idle`, and `sched=idle`. These
|
The `BG_CPUIO` type sets `nice=16`, `ioclass=idle`, and `sched=idle`. These
|
||||||
processes will only get CPU and disk time when nothing else needs it.
|
processes will only get CPU and disk time when nothing else needs it.
|
||||||
|
|
||||||
|
Next, boost interactive desktop applications that need to stay responsive:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo tee /etc/ananicy.d/99-desktop-priority.rules << 'EOF'
|
||||||
|
# Desktop apps that need high priority for responsiveness
|
||||||
|
|
||||||
|
# Terminal emulators
|
||||||
|
{"name": "warp", "type": "LowLatency_RT"}
|
||||||
|
{"name": "kitty", "type": "LowLatency_RT"}
|
||||||
|
{"name": "alacritty", "type": "LowLatency_RT"}
|
||||||
|
|
||||||
|
# Plasma desktop - boost higher than defaults
|
||||||
|
{"name": "plasmashell", "nice": -5, "ioclass": "best-effort", "ionice": 0, "latency_nice": -5}
|
||||||
|
|
||||||
|
# Browsers - boost for snappier UI
|
||||||
|
{"name": "vivaldi-bin", "nice": -3, "ioclass": "best-effort", "ionice": 2, "latency_nice": -3}
|
||||||
|
{"name": "firefox", "nice": -3, "ioclass": "best-effort", "ionice": 2, "latency_nice": -3}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
The `LowLatency_RT` type sets `nice=-12` — these apps get CPU priority over
|
||||||
|
almost everything else. The `99-` prefix ensures this file loads last and
|
||||||
|
overrides any conflicting defaults.
|
||||||
|
|
||||||
## Step 5: Tune VM Dirty Page Handling
|
## Step 5: Tune VM Dirty Page Handling
|
||||||
|
|
||||||
The kernel's default dirty page settings are tuned for servers, not desktops.
|
The kernel's default dirty page settings are tuned for servers, not desktops.
|
||||||
@@ -259,10 +288,24 @@ sudo sysctl --system
|
|||||||
| 1.2GB ClamAV RAM usage | 0 bytes |
|
| 1.2GB ClamAV RAM usage | 0 bytes |
|
||||||
| BFQ overhead on NVMe | Direct hardware scheduling |
|
| BFQ overhead on NVMe | Direct hardware scheduling |
|
||||||
| Compilation starves desktop | Compilation yields to UI |
|
| Compilation starves desktop | Compilation yields to UI |
|
||||||
|
| Coredump processing freezes system | Runs at idle priority |
|
||||||
|
| All processes equal priority | Desktop apps prioritized |
|
||||||
|
|
||||||
|
The final priority hierarchy looks like this:
|
||||||
|
|
||||||
|
| Process | Nice | Notes |
|
||||||
|
|:--------|-----:|:------|
|
||||||
|
| warp, kitty, kwin | -12 | `LowLatency_RT` — always responsive |
|
||||||
|
| plasmashell | -5 | Boosted from default -1 |
|
||||||
|
| vivaldi, firefox | -3 | Snappier than default |
|
||||||
|
| _normal processes_ | 0 | Default |
|
||||||
|
| pacman, dkms, gcc | +16 | `BG_CPUIO` — idle only |
|
||||||
|
| systemd-coredump | +16 | Won't freeze on crash dumps |
|
||||||
|
|
||||||
DKMS can now compile nvidia modules while I continue working. Package updates
|
DKMS can now compile nvidia modules while I continue working. Package updates
|
||||||
run in the background without the mouse cursor freezing. The system finally
|
run in the background without the mouse cursor freezing. Even when an app
|
||||||
behaves like it should on modern hardware.
|
crashes and generates a 100MB+ coredump, the desktop stays smooth. The system
|
||||||
|
finally behaves like it should on modern hardware.
|
||||||
|
|
||||||
# Diagnostic Commands
|
# Diagnostic Commands
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user