![根据 iotop,当 kworker 唤醒时,几乎只进行读写的进程会停滞](https://linux22.com/image/1019236/%E6%A0%B9%E6%8D%AE%20iotop%EF%BC%8C%E5%BD%93%20kworker%20%E5%94%A4%E9%86%92%E6%97%B6%EF%BC%8C%E5%87%A0%E4%B9%8E%E5%8F%AA%E8%BF%9B%E8%A1%8C%E8%AF%BB%E5%86%99%E7%9A%84%E8%BF%9B%E7%A8%8B%E4%BC%9A%E5%81%9C%E6%BB%9E.png)
我在 SSD 磁盘上有一个 30GB 的文件,并且有一个进程以循环的方式不断从文件中的随机位置进行读取和写入。
根据 IO top,该进程消耗了几乎最大的读写 IO(读取速度为 40MB/s,写入速度为 120MB/s,IO 占比约为 95%),持续时间约为 30 秒。在这 30 秒内,没有其他进程显示任何 IO 使用情况。在此期间,虽然总 IO 显示为 ~120M/s,但实际 IO 似乎处于空闲状态。
然后 30 秒后kworker
出现在顶部。它显示 0 DISK READ 和 0 DISK WRITE,但 IO 约为 95%。它持续约 45 秒,在这 45 秒内,我的进程也显示 IO 约为 95%,但读写速度显著下降,分别降至约 2MB/s 和 6MBs,方差很大。在此期间的总 IO 接近于零,但实际 IO 现在很高。约 45 秒后kworker
消失,我的进程全速运行另外 30 秒。
造成这种行为的可能原因是什么?