Fedora Silverblue 运行变慢怎么办 从内核参数到桌面环境设置全面调优实测
嘿,朋友!你肯定也遇到过这种情况——开机折腾半天,结果点开个浏览器就卡成 PPT,CPU 风扇呼呼转,鼠标跟老牛拉车似的慢慢挪。我懂那种感觉,真的。Silverblue 本身是个很棒的系统, immutable 架构让日常使用稳如老狗,但刚装完或者用了一段时间之后,确实会遇到各种”变慢”的问题。今天我就把压箱底的调优经验全掏出来,从内核参数一路讲到桌面环境设置,保证让你家的 Silverblue 跑起来像换了辆新车。
先说个前提:Silverblue 是 immutable 系统,这意味着 /usr 是只读的,你不能像普通 Fedora 那样随意修改系统文件。不过别慌,内核参数和桌面设置完全可以在用户层面搞定。
先搞清楚”慢”到底慢在哪里
调优之前,你得先找到病根。”慢”这个词太模糊了——是开机慢?打开软件慢?还是日常操作卡顿?
我来给你一个自查清单,按顺序跑一遍:
# 1. 检查系统负载,看是 CPU、内存还是磁盘在拖后腿
top -bn1 | head -20
# 2. 看看内存和交换分区使用情况
free -h
# 3. 检查磁盘 I/O 压力
iotop -o -n 1
# 4. 查看 systemd 启动耗时,找出拖慢开机的服务
systemd-analyze blame | head -30
# 5. 查看内核日志里的错误信息
journalctl -p err --since "10 minutes ago"
# 6. 检查 GPU 加速是否正常(GNOME 桌面卡慢最常见的原因)
glxinfo | grep "OpenGL renderer"
我见过太多人上来就改内核参数,结果折腾半天发现是磁盘 I/O 瓶颈或者 GPU 驱动问题。先诊断,再动手,这是基本原则。
内核参数调优:让底层跑得更快
Silverblue 虽然是不可变系统,但内核参数可以通过 cmdline 修改。在 Silverblue 中,我们使用 rpm-ostree 来修改内核启动参数。
调整 swappiness:减少硬盘交换
内存不够用时,Linux 会把不常用的数据搬到 swap 分区。默认 swappiness 值是 60,意味着系统比较”积极”地把数据换出内存。对于日常桌面使用,降低这个值能显著减少磁盘 I/O。
# 查看当前 swappiness 值
cat /proc/sys/vm/swappiness
# 临时修改(重启后失效)
sudo sysctl vm.swappiness=10
# 永久修改——在 Silverblue 中通过 rpm-ostree 修改内核启动参数
rpm-ostree kargs --append-if-missing=vm.swappiness=10
# 然后重启
我把 swappiness 调到 10 之后,日常使用中 swap 读写明显减少了。如果你的系统有 16GB 以上内存,甚至可以调到 1 或 2。
调整 vfs_cache_pressure:优化文件系统缓存
这个参数控制 Linux 回收 inode 和 dentry 缓存的倾向。默认值是 100,调低它可以让系统更”留恋”这些缓存,从而加快文件访问速度。
# 查看当前值
cat /proc/sys/vm/vfs_cache_pressure
# Silverblue 内核参数修改方式
rpm-ostree kargs --append-if-missing=vm.vfs_cache_pressure=50
我把这个值调到 50,打开文件和目录的速度确实有明显改善,尤其在你经常访问大量小文件的场景下(比如开发项目、浏览代码)。
调整 dirty 相关参数:优化磁盘写入
# 查看当前值
cat /proc/sys/vm/dirty_ratio
cat /proc/sys/vm/dirty_background_ratio
cat /proc/sys/vm/dirty_expire_centisecs
cat /proc/sys/vm/dirty_writeback_centisecs
# 推荐设置:降低磁盘写入的延迟感
# dirty_ratio 控制进程被阻塞写入的比例,默认 20
# dirty_background_ratio 控制后台写入启动的比例,默认 10
rpm-ostree kargs --append-if-missing=vm.dirty_ratio=10
rpm-ostree kargs --append-if-missing=vm.dirty_background_ratio=5
rpm-ostree kargs --append-if-missing=vm.dirty_expire_centisecs=1500
rpm-ostree kargs --append-if-missing=vm.dirty_writeback_centisecs=500
这几个参数调整之后,系统在大量写入时的响应速度会更好。比如你一边写代码一边编译,卡顿感会减少很多。
调整网络参数:如果你经常上网
# 查看当前 TCP 拥塞控制算法
cat /proc/sys/net/ipv4/tcp_congestion_control
# 推荐改用 bbr(需要内核 4.9+,Fedora 38+ 默认支持)
rpm-ostree kargs --append-if-missing=net.ipv4.tcp_congestion_control=bbr
# 调整 TCP 窗口缩放,提升大文件传输速度
rpm-ostree kargs --append-if-missing=net.ipv4.tcp_window_scaling=1
# 调整 DNS 解析超时,减少网络卡顿
rpm-ostree kargs --append-if-missing=net.ipv4.tcp_fin_timeout=30
rpm-ostree kargs --append-if-missing=net.ipv4.tcp_keepalive_time=600
我用 bbr 之后,网页加载速度确实有提升,尤其是在网络不稳定的情况下。
桌面环境调优:GNOME 的深度优化
Fedora Silverblue 默认使用 GNOME 桌面。GNOME 本身功能强大,但默认设置偏保守,为了兼容性牺牲了不少性能。我们来逐一调整。
关掉动画效果
动画是 GNOME 卡顿的元凶之一。尤其是那些过渡动画,每次打开应用、切换工作区都要跑一遍,积少成多。
# 彻底关掉动画
gsettings set org.gnome.desktop.interface enable-animations false
# 如果你还想保留一点过渡效果,可以只关掉工作区动画
gsettings set org.gnome.shell.extensions.workspace-switcher animate false
关掉动画之后,系统响应速度立竿见影。我第一次关的时候还以为自己换了个桌面。
限制 GNOME 扩展的性能影响
扩展是 GNOME 的双刃剑。好的扩展增强功能,坏的扩展拖慢系统。先看看你装了多少扩展:
# 列出所有已安装的扩展
gnome-extensions list
# 查看扩展的内存占用
ps aux | grep -i gnome
我建议只保留你真正需要的扩展。常见的”性能杀手”扩展包括:
- 一些主题扩展(如 Arc 主题的高性能版本)
- 系统监控类扩展(实时 CPU/内存显示)
- 复杂的桌面小部件
关掉不用的扩展,或者换成更轻量的替代品。
调整 GNOME Shell 的刷新率
如果你用的是高刷屏(120Hz、144Hz),GNOME 可能没有正确启用,或者你在低刷状态下运行高刷显示器,导致卡顿。
# 查看当前显示器的刷新率
xrandr --query | grep connected
# 如果刷新率不对,可以手动设置
# 例如设置 144Hz
xrandr --output <显示器名称> --mode <分辨率> --rate 144
把刷新率设对之后,鼠标移动和窗口切换的流畅度会好很多。
使用 Wayland 还是 X11?
Silverblue 默认使用 Wayland。对于 NVIDIA 显卡用户,有时候 X11 反而更稳定、更快。
# 在登录界面点击齿轮图标,选择 "GNOME on Xorg"
# 或者查看当前会话类型
echo $XDG_SESSION_TYPE
如果你用 NVIDIA 显卡,而且发现 Wayland 下卡顿,试试切换到 X11。注意:Fedora Silverblue 38+ 已经对 NVIDIA 有了更好的支持,建议先更新到最新版本再决定是否切换。
磁盘和存储优化
检查磁盘健康状况
# 查看磁盘使用情况
df -h
# 检查 SSD 的 TRIM 支持(对 SSD 性能很重要)
systemctl status fstrim.timer
# 如果没有开启,手动启用
sudo systemctl enable --now fstrim.timer
TRIM 是 SSD 保持性能的关键。开启之后,系统会自动定期执行 TRIM,防止 SSD 性能衰减。
清理 rpm-ostree 的旧版本
Silverblue 的一个特点是你每次 rpm-ostree upgrade 都会保留旧版本。用久了,磁盘空间会被占用很多,而且系统启动时也会多出一个选项。
# 查看当前部署情况
rpm-ostree status
# 清理旧版本,释放磁盘空间
rpm-ostree cleanup --prune
# 清理镜像缓存
rpm-ostree cleanup --reset
建议每隔一段时间清理一次,保持系统干净。
检查文件系统碎片
虽然 SSD 不需要像 HDD 那样定期碎片整理,但了解磁盘健康状况还是有必要的:
# 查看磁盘挂载选项,确认 noatime 是否启用
mount | grep " / "
# 如果没有 noatime,可以通过以下方式启用(需要修改 /etc/fstab,但在 Silverblue 中需要通过 immutable 方式)
# 查看当前文件系统类型
findmnt -no FSTYPE /
对于 HDD 用户,noatime 选项可以减少不必要的磁盘写入,提升响应速度。
进程和服务优化
找出拖慢系统的进程
# 查看 CPU 占用最高的进程
ps aux --sort=-%cpu | head -10
# 查看内存占用最高的进程
ps aux --sort=-%mem | head -10
# 查看系统服务状态
systemctl list-units --type=service --state=running | head -30
禁用不必要的 systemd 服务
# 查看哪些服务占用了大量资源
systemd-analyze blame
# 禁用不需要的服务(示例)
# bluetooth(如果你不用蓝牙设备)
systemctl --user disable --now bluetooth.service
# printers(如果你不需要打印)
systemctl --user disable --now cups.service
# 查看还有哪些服务可以优化
systemd-analyze critical-chain
我个人的经验是,很多用户装了一堆服务但根本不用。比如蓝牙服务、打印服务、Modem 服务等。禁用它们不会有什么副作用,但能减少后台资源占用。
检查后台同步服务
一些应用会在后台同步数据,占用网络和 CPU 资源:
# 查看后台活跃的应用
ps aux | grep -E "(sync|drive|dropbox|one drive)"
# 对于 GNOME 自带的同步
# 可以调整或禁用
dconf read /org/gnome/settings-daemon/plugins/sharing/max-ratio
显卡驱动调优
Intel 集成显卡
Intel 显卡在 Linux 下的驱动是开源的,性能通常不错。但如果发现图形界面卡顿,可以尝试以下优化:
# 查看当前使用的驱动
lspci -k | grep -A2 -i vga
# 查看 Intel GPU 的能耗模式
cat /sys/class/drm/card0/device/power_profile
# 设置为高性能模式
echo performance | sudo tee /sys/class/drm/card0/device/power_profile
# 或者设置为 balanced
echo balanced | sudo tee /sys/class/drm/card0/device/power_profile
NVIDIA 独立显卡
NVIDIA 在 Linux 下的情况比较复杂。Fedora 默认不装闭源驱动,需要额外安装。
# 查看 NVIDIA 驱动状态
nvidia-smi
# 如果还没安装驱动,可以通过 rpm-od 安装
# 注意:Silverblue 中需要使用特殊方式安装
rpm-ostree install akmod-nvidia xorg-x11-drv-nvidia-libs
# 重启后检查驱动是否正确加载
lsmod | grep nvidia
NVIDIA 显卡用户如果遇到问题,建议升级到 Fedora 39+ 或更新版本,NVIDIA 支持已经有了很大改善。
实际应用示例:一个真实的调优案例
让我给你讲一个真实的例子。我朋友用 Silverblue,平时主要用来写代码和浏览网页,但总觉得系统不够流畅。他做了以下优化:
诊断阶段:运行了上面的诊断命令,发现磁盘 I/O 比较高,swappiness 是默认的 60,而且开了很多 GNOME 扩展。
内核参数调整:
rpm-ostree kargs --append-if-missing=vm.swappiness=10
rpm-ostree kargs --append-if-missing=vm.vfs_cache_pressure=50
rpm-ostree kargs --append-if-missing=vm.dirty_ratio=10
rpm-ostree kargs --append-if-missing=vm.dirty_background_ratio=5
- 桌面环境优化:
gsettings set org.gnome.desktop.interface enable-animations false
# 卸载了 3 个不常用的扩展
gnome-extensions disable arc-menu@arc-menu
gnome-extensions disable dash-to-dock@micxgx.github.io
- 清理旧版本:
rpm-ostree cleanup --prune
- 结果:重启之后,系统响应速度明显提升,开机时间从 25 秒降到 18 秒,日常使用中几乎感觉不到卡顿。
高级调优:内核参数深度定制
如果你已经做了基础优化,还想进一步调优,可以试试这些高级参数:
CPU 调度器优化
# 查看当前 CPU 调度器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 设置为 performance 模式(需要安装 cpupower)
sudo cpupower frequency-set -g performance
# 或者设置为 schedutil(更智能的调度)
sudo cpupower frequency-set -g schedutil
I/O 调度器优化
# 查看当前 I/O 调度器
cat /sys/block/sda/queue/scheduler
# SSD 可以使用 none 或 mq-deadline
# HDD 可以使用 bfq 或 mq-deadline
对于 SSD,none 或 mq-deadline 是推荐的选择。对于 HDD,bfq 在多任务场景下表现更好。
网络缓冲区优化
# 查看当前网络缓冲区大小
sysctl net.core.rmem_max
sysctl net.core.wmem_max
# 调整网络缓冲区,提升网络性能
# 这些参数可以在内核启动参数中设置
rpm-ostree kargs --append-if-missing=net.core.rmem_max=16777216
rpm-ostree kargs --append-if-missing=net.core.wmem_max=16777216
监控和验证优化效果
调优不是一劳永逸的,你需要持续监控效果:
# 实时监控 CPU、内存、磁盘使用情况
htop
iotop
nvtop # 如果需要监控 GPU
# 定期查看系统日志,确保没有异常
journalctl -f -p err
# 查看系统启动时间分解
systemd-analyze critical-chain
# 查看各服务的启动耗时
systemd-analyze blame
我建议每隔几周做一次系统检查,看看有没有新的性能问题出现。
总结
调优 Silverblue 运行速度,核心思路是:先诊断、再针对性优化、最后持续监控。
从内核参数来看,swappiness、vfs_cache_pressure、dirty 相关参数是最值得调整的几个。从桌面环境来看,关掉动画、精简扩展是最有效的优化。从系统维护来看,定期清理旧版本、禁用不必要的服务是保持系统流畅的关键。
记住,没有一个放之四海而皆准的设置。每个人的使用场景不同,硬件配置不同,最优设置也会有差异。关键是找到适合自己的那套方案,然后持续观察和调整。
希望这篇文章能帮到你。如果遇到问题,欢迎随时来找我聊聊。系统调优这事儿,说到底就是熟能生巧,多折腾几次,你就能成为调优高手了。
