![Linux 中 I/O 性能出现大规模且不可预测的下降](https://linux22.com/image/51048/Linux%20%E4%B8%AD%20I%2FO%20%E6%80%A7%E8%83%BD%E5%87%BA%E7%8E%B0%E5%A4%A7%E8%A7%84%E6%A8%A1%E4%B8%94%E4%B8%8D%E5%8F%AF%E9%A2%84%E6%B5%8B%E7%9A%84%E4%B8%8B%E9%99%8D.png)
我使用 Debian 测试大约 6 年没有任何问题(我只是定期更新它),但最近它开始表现出随机行为,可以概括为“低 I/O 性能,持续到重新启动”。
问题是,突然所有磁盘读取和写入速度减慢至约 5MB/秒,这导致连续读取和写入。由于速率如此之低,磁盘不会受到机械挑战或压力,但一切都会变慢,直到我重新启动。
计算机的 I/O 子系统由 1 个 OCZ Vertex 3 SSD 和 2 个 WD Caviar Black HDD 组成。 SSD 保存操作系统的读取密集部分,HDD 上的分区保存其余部分。
为了诊断问题,我尝试了以下方法但没有成功:
top
CPU 和 I/O 使用情况均未显示任何失控活动。hdparm
返回磁盘的正常性能评级(-t
不过我只检查过)。smartctl
没有显示磁盘中的任何性能问题。长时间的测试表明磁盘就像新的一样。
系统配备 Z77 芯片组、16GB RAM 和 Intel i7 3770K CPU,统计数据显示 RAM、I/O 或 CPU 没有饱和的迹象,但我没有调试此类问题的经验(尤其是在内核空间中)。任何帮助将不胜感激。
更新1:
- 作为预防措施,我在每个分区上运行(强制)fsck。所有FS都是干净的。
- 顺便说一句,我发现了一个月前发布的 BIOS 升级并应用了它。
- 没有分区填充超过 50%。
更新2:
问题两天了还没有出现。或者fsck
BIOS 更新清除了系统中的一些堵塞物。我仍在关注这个问题,并将通过事后分析的答案来结束这个问题。
更新3:
问题又出现了,我做了更多的挖掘。请看答案。
答案1
我设法再次重现该问题,这是大磁盘缓存的结果。我的磁盘缓存可以增长超过 8GB,但似乎某些应用程序不喜欢它并且 I/O 会受到影响。
以 root 身份删除磁盘缓存echo 3 > /proc/sys/vm/drop_caches
可以解决该问题。我目前不知道为什么大磁盘缓存会导致 I/O 性能下降。
最后更新:经过更多调查后,我发现缓存中的文件数量触发了问题。当尝试将许多小文件提交回磁盘时,它会破坏磁盘。由于我使用该系统已经有十年了,所以我决定重新安装 64 位 Debian。现在工作进展顺利。这可能是十年升级的副作用,发现了 32 位操作系统的限制。
答案2
是否有任何可疑消息dmesg
?
您可以尝试使用更多工具来深入了解系统的瓶颈:
- 数据统计
- 延迟顶部
- 系统教授