我有一个使用 Ryzen 3400G、8GB 内存和 SSD 驱动器的低端现代硬件。我在网上阅读了有关使用 preload、irqbalance 和 swappiness 加快响应速度的文章。计算机主要用作工作站和编程。
预载
该程序通过将常用程序预加载到 RAM 来工作。目的是加快各种常用程序的启动速度。
有人说,如果你用 SSD,这个程序就无所谓了,所以这个程序对于现代硬件来说有点过时了。这是真的吗?
IRQ 余额
它将中断传播到各种处理器。这真的有助于加快响应速度吗?
交换性
如果没有足够的 RAM,那么它可能会在何时将页面交换到 SSD 或硬盘驱动器。如果连交换都没有怎么办?我实际上没有交换,它似乎很好。即使我有一个交换,而不是使用 SSD 作为交换,我使用 zram 作为交换,那么交换真的有很大的不同吗?
厌烦
有一个程序可以为那些需要更高交互的人设置更高的优先级。不知何故,我根本感觉不到速度(就响应能力而言)差异。
回答我自己的问题
1) 预载
好的
取决于你使用什么程序。
如果您使用需要启动一次的 google chome,则无济于事。如果您使用经常运行的程序,这可能会有所帮助
坏的
它消耗内存
它会减慢启动速度
如果您有 SSD,则实际上不需要预加载。这是因为 SSD 提供比硬盘快得多的随机访问时间,因此在内存中“预加载”二进制文件/依赖项是一种浪费,IMO
对于所述硬件,预加载是无用的
2) IRQ 余额
旧帖
https://serverfault.com/questions/513807/is-there-still-a-use-for-irqbalance-on-modern-hardware?rq=1
IRQbalance 防止所有 IRQ 请求在单个 CPU 上备份。我已经看到许多具有 4 个以上 CPU 内核的系统执行缓慢,因为各种 CPU 上的所有进程都在等待 CPU 0 处理网络或存储 IRQ 请求。CPU 0 看起来非常非常繁忙,所有其他 CPU 都不忙,但应用程序非常慢。这些应用程序很慢,因为它们正在等待来自 CPU 0 的 IO 请求。
IRQbalance 试图以一种智能的方式在所有 CPU 之间平衡这一点,并在可能的情况下将 IRQ 处理置于尽可能接近进程的位置。这可能是同一个核心,同一个芯片上的一个核心共享同一个缓存,或者是同一个 NUMA 区域中的一个核心。
你应该使用 irqbalance 除非:
您出于很好的理由(低延迟、实时要求等)手动将您的应用程序/IRQ 固定到特定内核
虚拟客人。这实际上没有任何意义,因为除非您将客户机固定到特定的 CPU 和 IRQ 以及专用的网络/存储硬件,否则您可能看不到裸机所带来的好处。但是您的 KVM/RHEV 主机应该使用 irqbalance 和 numad 并进行调整。
较新的帖子
但是,在https://github.com/konkor/cpufreq/issues/48
我的第一个论点是应用程序在启用 irqbalance 的情况下无法正常工作。二是省电。第三,性能相关问题等。
顺便说一句:我很确定在很多情况下 irqbalance 可能对服务器的任务非常有用,但对台式机的使用却没有,尤其是对于笔记本电脑台式机用户。
Linux 非常面向服务器,任何 Linux 发行版都希望分发多个版本的内核。所以我们都必须为服务器硬件、软件、协议和 ms azure 堆栈等运行大量无用的东西,包括 irqbalance。
如果您在工作流程中没有看到 CPU0 上的 100% 负载,则根本不需要使用 irqbalance。现代内核也根据 cpu0 加载自行管理它。
似乎 linux > 4.9 能够在没有外部守护程序的情况下进行 irqbalance
即使是 debian,ubuntu 现在也默认禁用它
https://bugs.launchpad.net/ubuntu/+source/ubuntu-meta/+bug/1833322
irqbalance 在技术上在桌面系统上是不需要的(据说它主要用于服务器),实际上可能会降低性能和节能。它似乎只为负载相对恒定的服务器环境提供好处。如果它真的是一个面向服务器的软件包,那么它不应该默认安装在桌面上
3) 对于交换性
如果您有足够的 RAM,则无需担心交换。所以所有提到的都是无关紧要的。但是当你有一天内存用完时,你会遇到麻烦
4) 厌烦
这个想法很好,但不知道性能差异