html
如果你想要一种提供稳定性、灵活性和性能的系统,你应该考虑使用 Linux 发行版。这个操作系统(OS)之所以被广泛推荐,主要是因为内核,它是使一切正常运作的核心。Linux 内核管理从调度进程到内存分配和设备通信的一切。它的表现非常出色,以至于你可以在不做任何调整的情况下轻松运行内核。
大多数人不需要对内核进行任何调整,所以如果你觉得自己被排除在外,也不用担心,因为你的基于 Linux 的操作系统在没有这些调整的情况下也能正常运行。但如果你想对 Linux 和你的 PC 进行一些微调以获得更多性能,我有一些建议可以供你参考。
对你的 Linux 内核进行任何操作都有风险。可能会出现问题,因此请务必备份你无法承受丢失的所有内容。关于各种内核参数有很多文档可以查阅,我建议在进行任何更改之前先阅读一下。
调整 CPU 频率缩放
让它更快
Linux 和其他所有现代操作系统一样,动态地 根据负载缩放 CPU 频率。负载越高,操作系统对 CPU 的需求就越大,从而为更高要求的任务提供更好的性能。这一切都很好,但调整 CPU 管理器可以提高性能或电源效率。如果你需要 CPU 始终以最大频率运行,只需一个命令即可实现。
有几个选项可供选择,包括性能、节能和 schedutil(ondemand 目前几乎被视为遗留选项)。如果想把所有 CPU 核心设置为性能模式,我建议用 cpupower 或 turbostat 这样的工具,不过如果你有勇气,可以在自定义的 bash 脚本中运行以下命令:
#!/bin/bash
#将 CPU 核心调至性能模式
for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance > $cpu
完成
切换 I/O 调度
更改数据处理方式
I/O 调度程序可以帮助优化磁盘访问请求。即使是速度超过 15,000 MB/s 的超快 SSD,访问存储在磁盘上的数据仍然比随机存取内存 (RAM) 或 CPU 缓存慢得多。I/O 请求会被合并到相似的位置,以提高响应速度,确保请求集中并降低 HDD 的寻道时间。Linux 提供了几种可用的 I/O 调度程序选项,每种都有其独特的优缺点。
特别是对于主要进行 I/O 而非 CPU 密集型计算的服务器或虚拟机,切换到 deadline 或 noop 可以减少 CPU 开销,提高吞吐量。Deadline 的工作原理是将请求分成两个队列,一个用于读取,另一个用于写入数据。Noop 更适合 SSD、虚拟机等,因为它将所有 I/O 请求放入先进先出 (FIFO) 队列中。它更简单,但能减少开销,特别是在底层系统有 I/O 调度程序的情况下。下面是操作方法:
#!/bin/bash
# 更改设备的 I/O 调度程序
echo deadline > /sys/block/sda/queue/scheduler
优化 CPU 利用率
有效利用每个核心
最早合格虚拟截止时间优先算法(Earliest Eligible Virtual Deadline First,EEDVF)是一种内核中包含的 CPU 调度算法,负责调度 CPU 完成任务。大部分情况下它相当可靠,但如果你希望提高系统的整体响应能力,我建议对基于 Ryzen 的系统进行 CFS Zen 调整,或者使用像 system76-scheduler 这样的工具自动调整交互任务的优先级。服务器可以利用 CPU 钉扎,将特定的处理器或线程分配给指定的 CPU 核心,覆盖 Linux 调度器的动态核心移动。
根据你的硬件配置,最优的调度器配置可能会有很大差异。和往常一样,最好在做任何更改之前先进行一些测试,然后在更改后再次进行相同的测试。 Ananicy 是另一个选项,通过根据 I/O 和 CPU 活动动态调整进程的优先级,使 CPU 更加智能地工作。优先级值决定了哪些进程拥有更多的 CPU 时间,帮助减少交互任务的 CPU 饥饿——或者你也可以继续阅读,选择使用 cgroups。
使用 sysctl 调整内核
进行微调
Linux 内核暴露了许多可以影响系统性能的参数,其中一些我已经提到过。但 sysctl 可以用来与许多参数接口,允许你快速进行更改(并能恢复),希望能让 PC 更加响应。例如,我们可以对 vm.dirty_ratio 和 vm.dirty_background_ratio 进行一些更改,以改变 Linux 何时将脏页刷新到磁盘,这可以帮助处理重写工作负载。脏页是指系统页面缓存中已修改但尚未写入非易失性存储(如 SSD)的数据。
网络发送和接收缓冲区可以通过 net.core.rmem_max 和 net.core.wmem_max 进行调整。然后还有控制组(cgroups),让你精确控制每个工作负载获得多少 CPU 或 I/O。我已经介绍了像 Ananicy 这样的工具,它们可以动态改变进程分配 CPU 和 I/O 时间的方式,但 cgroups 可以被视为实现类似结果的稍微安全的方法,因为它们是临时的,除非被设为永久。
记得监控变化
如果你没有办法验证你所做的调整对系统性能产生积极影响,那么这些调整几乎没有意义。这时监控和基准测试就显得很重要了。最好在应用更改前后做些笔记,确保你走在正确的路上。我推荐使用 btop 来监控 CPU 和系统资源的使用情况,sar 来查看历史性能,netstat 来监控网络,以及 OCCT 来进行基准测试。
这就是 Linux 的一个优势,让你可以把操作系统变得更符合自己的需求。
热门跟贴