![为什么 Linux 内核不优先考虑交互式程序?](https://linux22.com/image/68500/%E4%B8%BA%E4%BB%80%E4%B9%88%20Linux%20%E5%86%85%E6%A0%B8%E4%B8%8D%E4%BC%98%E5%85%88%E8%80%83%E8%99%91%E4%BA%A4%E4%BA%92%E5%BC%8F%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我注意到,当以 100% 运行时,GNOME 之类的东西的响应速度会降低,直到我终止预计需要很长时间的后台任务(例如编译或下载电子邮件)。为什么Linux内核不给需要实时响应能力的程序更高的优先级?
顺便说一句,我在全新安装的 Fedora 上运行内核版本 4.0。
答案1
我相信它确实优先考虑了交互式程序——但也许还不够。程序运行的时间越长,就会失去优先级,非交互式程序比交互式程序更快地失去优先级。
你真的不应该在接近 100% CPU 使用率的情况下运行,如果你这样做,也许你应该检查一些事情......
有两件事会影响程序的优先级——初始的好值和使用的调度程序。 Nice 可以让您降低某些程序的优先级(例如繁重的编译工作)。 root 还可以通过nice 为程序提供更高的优先级。调度程序决定程序可以“占用”CPU 的程度,以及何时可以抢占其他进程。在这里,一个进程可以被赋予“实时”优先级,这意味着它先于其他进程运行。
问题是您不知道是什么占用了您的系统。也许 GNOME 很慢,因为它必须等待一些必须在磁盘上等待的子进程...也许你的显卡不配合,所以 GNOME 必须使用图形软件渲染...因为只是给 GNOME 一个更好的好的值和/或不同的调度策略,可能会使您的系统变得更慢,因为 GNOME 正在等待的内容(例如磁盘访问)现在可能会被 GNOME 抢占,因此运行速度比以前更慢。
一旦你发现问题出在哪里,你可以尝试给 X 和/或 GNOME 一些更好的好处和/或调度...但不要过度关注——例如,有一些重要的系统守护进程以-5或-10的nice值运行(负值=更高/更好的优先级),这可能不应该被你突然给GNOME一个-18的nice值抢占。