如何追踪 I/O 尖峰的来源?

如何追踪 I/O 尖峰的来源?

我使用 Linux 作为桌面,并且不断出现看似随机的 I/O 峰值。机器变得慢得无法使用。起初我以为只是我内存不够。但查看 and 的输出freetop没有发现任何异常。 CPU 负载也是如此。

如果我不立即终止有问题的进程,机器就会很快(大约 10 分钟)停止运行,直到完全停止,我必须进行硬重置。

一位同事告诉我他也遇到了类似的问题,并且他注意到 I/O 峰值。顺便说一句,我们有相同的机器(它们由公司提供)。

我还注意到,在 Chrome 中打开新选项卡时经常会出现这些峰值。但它思考在其他场合也发生过这种情况。就像在 Firefox 中打开一个选项卡一样,或者只是随机地打开一个选项卡。

我决定运行dstat并查看输出,但改变了主意并使用了ksysguard,只是因为更改更容易看到。

监视器截图:

截屏

正如您所看到的,磁盘 I/O 出现峰值,这与系统负载的峰值同时发生。奇怪的是,内存使用情况向下那一刻。这可能和交换有关吗?

有两个尖峰。第一个是我立即感受到的,与点击 Chrome 中的链接同时发生(甚至没有打开选项卡,而是触发 JavaScript 代码)。我立即单击该选项卡上的“关闭”按钮,机器再次响应。第二个没有明显效果。内存使用量下降的事实可能是因为我关闭了选项卡,因为它稍微发生了I/O 尖峰。

整个峰值(第一个)持续了大约10秒。

知道要注意什么吗?

答案1

我已经找到罪魁祸首了。

这确实是由于交换设置错误造成的。我fstab列为/dev/mapper/cryptswap交换空间。这是不存在的。我的猜测是,一旦系统需要交换,它就会看到已定义的交换空间,但该设备在任何地方都不存在。

为了进行测试,我只是创建了空文件作为交换空间。从那时起,机器似乎运行稳定了很多。从那以后我再也没有遇到过峰值/崩溃。但是我查看正在使用的新交换文件。

相关内容