通常我不太关心桌面性能,因为我的服务器不运行任何图形用户界面。但在家里,我运行一些较旧的硬件(奔腾),有时会变得非常缓慢(KDE 中的鼠标移动)。我观察到,在这种情况下,正在进行一些磁盘 io 后台活动。
我如何设置较低的磁盘优先级,以便我的 gui 得到更多关注?
我已经尝试将我的SATA驱动器的磁盘调度程序从cfq设置为as - 但这没有帮助。
我记得很久以前我在 OpenSuSE 上遇到了类似的问题 - 我在那里设置了一个不同的通用调度程序滴答率(据我记得,默认值较短)。但我不记得那到底是什么,也不记得如何在我当前的 Linux(CentOS 5,32 位)上设置它。
欢迎任何提示。
答案1
听说ulatencyd
?
来自其README
:
==什么是延迟==
Ulatency 是一个守护进程,它控制 Linux 内核如何在运行的进程上使用其资源。它使用动态 cgroup 向内核提供进程的提示和限制。 [...]
==它试图解决什么问题==
Linux 调度程序在为所有进程提供可用资源方面做得非常好,但是这可能不是桌面情况下的最佳用户体验。
ulatencyd
监视系统并将正在运行的进程分类到 cgroup 中。那些疯狂运行、导致大量交换而减慢系统速度的进程将被隔离。
如果我没记错,下面部分使用了(io
)nice
。我从未尝试过,但如果它信守承诺,可能会对您有所帮助。
答案2
您有 >= 2.6.38 的内核吗?如果没有,您可能需要升级内核,因此它包括“创造奇迹的约 200 行 Linux 内核补丁”。该补丁极大地提高了 Linux 桌面的响应能力。正如 Mikko Rantalainen 指出的那样,自从引入此补丁以来,我的桌面唯一一次变慢的时间就是交换时,即使使用最新版本的 X。
答案3
您可以尝试使用 ionice(然后返回 cfq,大多数时候它更快),但我不认为它可以在那种旧硬件上创造奇迹。
如果您确实需要在 X 上运行 X,尤其是 KDE,并期望它能够正常运行,我建议您进行硬件升级。
答案4
无论如何,我最近从 Ubunto 3.0.16 中的标准内核转向了低延迟内核,桌面性能的变化是惊人的。这需要一些工作,因为 Ubuntu 发行版中包含的 Nvidia 驱动程序无法加载低延迟内核,但 Nvidia 网站上的完全相同的驱动程序版本运行良好。我以前很少但偶尔会跳过 WinAmp(在 Wine 下),使用新内核后不再会这样,而且现在切换虚拟桌面是即时的。