通常,我的笔记本电脑的瓶颈是磁盘。当进行一些磁盘密集型计算时,自动启动的后台进程(如updatedb
等find /something
)会启动,使事情变得更糟。他们被设置为好的,但这并没有帮助,因为 CPU 不是问题,I/O 才是。
问题:如何缓解问题(除了手动杀死它们),更一般地说,是否有类似的机制好的,但是考虑 I/O 吗?
更一般地说,如何提高 Linux (Ubuntu 14.04) 系统的 I/O 响应能力?目前,当一个应用程序达到最大磁盘使用率时,系统响应速度非常慢 - 例如,在 Firefox 中打开网页需要很长时间(即使系统没有交换;交换时情况会变得更糟) 。 Swappiness 设置为 0,这很重要。
答案1
- 你看过 ionice 吗?
- 您可能需要使用 posix fadvise 运行 Updatedb/find 来通知操作系统您不希望这些程序弄脏您的页面缓存。这样,缓存的磁盘 I/O 就会保留在内存中。
- 您还可以重新设计 cron 作业,将这些后台进程推送到计算未运行的时间。此外,您可以修改 cron 作业,在启动之前首先查明您的磁盘是否繁忙(如果 iostat -x 表示磁盘繁忙,则休眠一个小时并重试)
- 笔记本电脑上的 I/O 可能会很糟糕,尤其是如果您的笔记本电脑转速为 5400RPM。您可能需要尝试添加一些内存,以便可以利用页面缓存。
- Firefox 速度慢实际上是一个有趣的问题。在我之前的工作中,我们就遇到过这个问题。如果我没记错的话,Linux 非常喜欢将 I/O 页缓存在内存中。它甚至会达到交换程序内存的程度(即firefox)。因此,当您启动 Firefox 时,Linux 将不得不换出其他一些应用程序来创建一些空间,换入 Firefox 并满足您的请求...