我已经安装了 indicator-multiload 以便能够监控我的网络和 cpu。使用 indicator-multiload 我注意到浏览器(firefox 和 midori)会导致相对较高的 cpu 负载。
这是我打开一个新标签并加载内容的时候。有时,至少 PC 的某些反应会冻结几秒钟。更准确地说:实际的 CPU 负载(“系统”)根本不高。而是所谓的“I/O 等待”非常高(有时高达 70% 左右)。一旦相应的页面完全加载,一切都会再次恢复正常,整个系统就像以前一样响应。当然,这种行为取决于页面的内容。只是文字或只有几张图片意味着没有滞后。
我想补充一点,我不使用任何交换,既不作为单独的分区也不作为交换文件。并且:我的系统安装在 USB 记忆棒 (64GB) 上,USB 2.0 但我不知道这是否与它有关。
我的问题是:有没有办法操纵上述行为,即我可以以任何方式改变与“I/O 等待”有关的 cpu 行为吗?
罗西卡
PS:系统:Linux/Lubuntu 16.04.1 LTS,64bit
我对 USB 驱动器(而不是实时系统)上的系统分区(Lubuntu 14.04)进行了类似的观察。不幸的是,这并非没有问题。
许多 USB 记忆棒(尤其是 USB2.0)的写入速度非常慢,即使它们在写入大文件时速度相当不错,但有些可能会因为小块的分散写入而变得非常慢(对于 ext4 文件系统,写入了许多 8k 块) . 然后发生的情况是系统的写入队列变得拥挤,并且应用程序被卡住等待它们的写入完成很长时间(即显示为“I/O 等待”的状态),即使它们只向一个日志文件。当这种情况发生在面板应用程序上时,整个桌面可能会“冻结”。
有所帮助的是禁用 Firefox 中的磁盘缓存,以及其他可能大量写入磁盘的东西。不幸的是,在标准系统中,很多东西一直在写入磁盘。
我使用“iostat -x 1”(一般显示磁盘 I/O 的状态)和“iotop”对此进行了调查。后者有助于识别大量写入磁盘的进程。
我还尝试了不同的磁盘调度程序及其设置,但它并没有太大帮助,所以我不会在这里详细介绍。
实际上,我有两个便宜的(ish)USB 3.0 驱动器在几个月或一年后因这种使用而死亡,显然它们不是为大量写入而制造的(闪存会因大量写入而磨损,在特别是如果文件系统没有针对闪存进行优化)。
唯一真正有帮助的是获得可以支持写入负载的优质 USB 驱动器。您特别要寻找的是对于小 (8K) 块大小的良好写入性能(至少几 MB/秒)。我现在使用的是 SanDisk Extreme USB 3.0 32MB,它显然使用了 SSD 控制器 - 比通常的 USB 驱动器更复杂的优化/磨损均衡和更好的写入性能。它还具有一些有限的 SMART 支持,因此如果您留意它,至少它不会在没有警告的情况下失败。它们通常很贵,但我在中国 ebay 上发现了一些相对便宜的“翻新”。这里不打算使用商业插件,可能还有其他具有类似性能的插件。
另一种选择可能是在系统分区上使用 f2fs(“闪存友好文件系统”),但我没有尝试或调查过这个。