跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    Fedora 45 系统调优:zram 已开、oomd 已护,tuned 要自己装

    调优之前先搞清楚哪些已经做了,不然容易重复劳动或改坏默认。

    zram、oomd、swappiness 已默认生效,tuned 需自行启用

    Terminal window
    cat /proc/sys/vm/swappiness
    zramctl
    systemctl is-active systemd-oomd
    systemctl is-active tuned
    60
    NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram0 lzo-rle 3.8G 2G 878.9M 896.9M [SWAP]
    active
    inactive

    四件事已经默认做好了:

    项F45 默认说明
    zram已启用,lzo-rle,3.8G内存压缩当 swap 用,比磁盘 swap 快得多
    systemd-oomdactive内存压力大时主动杀进程,避免整机卡死
    swappiness60内核默认值
    tuned未运行需要自己装并启用

    tuned 是 Fedora 的自动调优守护进程,仓库版本 2.28.0,实测安装事务 13 个包。

    Terminal window
    sudo dnf install tuned
    sudo systemctl enable --now tuned
    tuned-adm active
    Current active profile: virtual-guest

    它会自动识别机器类型。 在虚拟机里装完,默认方案是 virtual-guest,不需要手动挑。

    看全部预设方案:

    Terminal window
    tuned-adm list

    实测共 15 个方案,常用的几个:

    方案适用
    balanced通用,默认
    desktop桌面交互优先
    throughput-performance吞吐优先,关省电
    latency-performance延迟优先
    virtual-guest虚拟机客户机(实测自动选中)
    powersave省电

    切换:

    Terminal window
    sudo tuned-adm profile throughput-performance

    F45 用 zram-generator 生成 zram 设备,配置文件在 /usr/lib/systemd/zram-generator.conf。默认已经启用,不需要再手动创建。

    Terminal window
    rpm -q zram-generator
    zram-generator-1.2.1-6.fc45.x86_64

    要调整大小才改配置,改完:

    Terminal window
    sudo systemctl daemon-reload
    sudo systemctl restart [email protected]
    Terminal window
    systemctl is-active systemd-oomd
    systemctl status systemd-oomd --no-pager | head -5

    它按 cgroup 的内存压力杀进程,比内核 OOM killer 更早介入、更有选择性。

    另一个选择是 earlyoom(1.9.0),机制更粗暴但可预测:

    Terminal window
    sudo dnf install earlyoom
    sudo systemctl enable --now earlyoom

    两者选一个就够,同时开可能互相抢着杀进程。

    工具版本用途
    htop3.5.3进程与内存实时视图
    btop1.4.7更漂亮的 TUI,含网络/磁盘
    powertop2.15功耗与唤醒源分析
    Terminal window
    sudo dnf install btop htop powertop
    btop

    powertop 需要 root 才能看到完整数据:

    Terminal window
    sudo powertop
    1. 先看默认:zramctl、systemctl is-active systemd-oomd —— 多数机器到这里就够了
    2. 再决定要不要 tuned:服务器/虚拟机装 tuned 并让它自动选方案
    3. 最后才动内核参数:vm.swappiness 之类,改之前记下原值

    改内核参数的正确写法(持久化):

    Terminal window
    echo 'vm.swappiness = 10' | sudo tee /etc/sysctl.d/99-swappiness.conf
    sudo sysctl --system

    直接 sysctl -w 只是临时生效,重启就丢。

    现象原因
    tuned-adm 报 DBus 连不上守护进程没启动
    改完 swappiness 重启失效只用了 sysctl -w,没写 /etc/sysctl.d/
    zram 大小改了没生效没 restart systemd-zram-setup@zram0
    系统仍然卡死oomd 与 earlyoom 同时开或都没覆盖到瓶颈
    装 tuned 后性能没变化方案选的是 balanced,与默认差别很小