Fedora 45 系统调优:zram 已开、oomd 已护,tuned 要自己装
调优之前先搞清楚哪些已经做了,不然容易重复劳动或改坏默认。
默认状态实测
Section titled “默认状态实测”cat /proc/sys/vm/swappinesszramctlsystemctl is-active systemd-oomdsystemctl is-active tuned60NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT/dev/zram0 lzo-rle 3.8G 2G 878.9M 896.9M [SWAP]activeinactive四件事已经默认做好了:
| 项 | F45 默认 | 说明 |
|---|---|---|
| zram | 已启用,lzo-rle,3.8G | 内存压缩当 swap 用,比磁盘 swap 快得多 |
| systemd-oomd | active | 内存压力大时主动杀进程,避免整机卡死 |
| swappiness | 60 | 内核默认值 |
| tuned | 未运行 | 需要自己装并启用 |
tuned:装与不装
Section titled “tuned:装与不装”tuned 是 Fedora 的自动调优守护进程,仓库版本 2.28.0,实测安装事务 13 个包。
sudo dnf install tunedsudo systemctl enable --now tunedtuned-adm activeCurrent active profile: virtual-guest它会自动识别机器类型。 在虚拟机里装完,默认方案是 virtual-guest,不需要手动挑。
看全部预设方案:
tuned-adm list实测共 15 个方案,常用的几个:
| 方案 | 适用 |
|---|---|
balanced | 通用,默认 |
desktop | 桌面交互优先 |
throughput-performance | 吞吐优先,关省电 |
latency-performance | 延迟优先 |
virtual-guest | 虚拟机客户机(实测自动选中) |
powersave | 省电 |
切换:
sudo tuned-adm profile throughput-performancezram:默认已开,注意别重复配
Section titled “zram:默认已开,注意别重复配”F45 用 zram-generator 生成 zram 设备,配置文件在 /usr/lib/systemd/zram-generator.conf。默认已经启用,不需要再手动创建。
rpm -q zram-generatorzram-generator-1.2.1-6.fc45.x86_64要调整大小才改配置,改完:
sudo systemctl daemon-reloadOOM 保护:systemd-oomd 已经在跑
Section titled “OOM 保护:systemd-oomd 已经在跑”systemctl is-active systemd-oomdsystemctl status systemd-oomd --no-pager | head -5它按 cgroup 的内存压力杀进程,比内核 OOM killer 更早介入、更有选择性。
另一个选择是 earlyoom(1.9.0),机制更粗暴但可预测:
sudo dnf install earlyoomsudo systemctl enable --now earlyoom两者选一个就够,同时开可能互相抢着杀进程。
| 工具 | 版本 | 用途 |
|---|---|---|
htop | 3.5.3 | 进程与内存实时视图 |
btop | 1.4.7 | 更漂亮的 TUI,含网络/磁盘 |
powertop | 2.15 | 功耗与唤醒源分析 |
sudo dnf install btop htop powertopbtoppowertop 需要 root 才能看到完整数据:
sudo powertop一次合理的调优顺序
Section titled “一次合理的调优顺序”- 先看默认:
zramctl、systemctl is-active systemd-oomd—— 多数机器到这里就够了 - 再决定要不要 tuned:服务器/虚拟机装 tuned 并让它自动选方案
- 最后才动内核参数:
vm.swappiness之类,改之前记下原值
改内核参数的正确写法(持久化):
echo 'vm.swappiness = 10' | sudo tee /etc/sysctl.d/99-swappiness.confsudo sysctl --system直接 sysctl -w 只是临时生效,重启就丢。
| 现象 | 原因 |
|---|---|
tuned-adm 报 DBus 连不上 | 守护进程没启动 |
| 改完 swappiness 重启失效 | 只用了 sysctl -w,没写 /etc/sysctl.d/ |
| zram 大小改了没生效 | 没 restart systemd-zram-setup@zram0 |
| 系统仍然卡死 | oomd 与 earlyoom 同时开或都没覆盖到瓶颈 |
| 装 tuned 后性能没变化 | 方案选的是 balanced,与默认差别很小 |
- systemd 服务与定时器 — 单元管理与
daemon-reload - 存储与 btrfs — swap 与文件系统层面
- 终端与 shell — 观察工具的运行环境