在 Linux 上调试 IO 饱和度

在 Linux 上调试 IO 饱和度

我遇到了以下问题。在一台机器上,在一次程序执行期间,设备 IO 饱和到 100% util(通过 iostat -x 1)。而在其他 CPU/GPU 性能较弱的机器上,没有这样的问题,即 iostat 很快收敛到 0 左右。

CPU 未饱和,即进程不占用大量 CPU。其他机器上的 GPU 已饱和,而在 IO 利用率 100% 上,GPU 未饱和。

两台机器的 RAM 均未饱和。

对于这个程序来说,GPU 应该是瓶颈,而不是 IO。

该程序使用docker运行,具体来说是两台机器上的nvidia-docker,使用相同的docker镜像。

在有问题的机器上,我运行了 hdparm -tT,机器之间没有太大区别。文件系统是 ext4,占用 1.4TB/1.8TB。数据由 1-3MB 文件组成,总计 400GB。

该进程是多线程/多进程的,其中每个子进程将其读取和处理的数据传达给主进程(因为 python GIL)。

我不知道问题可能是什么以及如何调试它。

编辑:

有问题的机器上的 docker 版本为 1.13.1,正常的机器上的 docker 版本为 1.13.0。正常的机器上的内核 Linux 版本为 4.4.0-57,有问题的机器上的 docker 版本为 4.4.0-62

相关内容