IO阻塞进程是否会在"顶部"输出中显示100%的CPU利用率?

Ale*_*ard 4 linux io cpu performance

我有一个可以在不同数量的进程上并行化的分析.预计事情将是IO和CPU密集型(如果有人好奇的话,非常高吞吐量的短读取DNA对齐.)

运行它的系统是48核linux服务器.

问题是如何确定最佳的过程数量,以便最大化总吞吐量.在某些时候,这些过程可能会成为IO限制,因此添加更多过程将没有任何好处,也可能是有害的.

当达到这一点时,我能从标准系统监控工具中判断出来吗?top(或者可能是不同的工具)的输出是否能够区分IO绑定和CPU绑定进程?我怀疑IO上阻止的进程可能仍然显示100%的CPU利用率.

Tom*_*son 6

当一个进程在IO上被阻止时,它没有运行,所以没有时间考虑它.如果有另一个可以运行的进程,那么它将运行; 如果没有,则将时间计为"IO等待",将其视为全局统计.

IO等待监控是有用的.它显示在top的标题中,就像%iw一样.您可以使用iostat和vmstat等工具更详细地监控它.Serverfault可能是一个更好的问题.


Ric*_*key 1

即使是单个 IO 密集进程也很少会表现出高 CPU 利用率,因为操作系统已调度其 IO 并且通常只是等待其完成。因此top无法准确区分IO密集型进程和仅定期使用CPU的非IO密集型进程。事实上,如果系统因所有 IO 密集型进程而严重超载,几乎无法完成任何任务,那么 CPU 利用率就会非常低。

仅使用 top 作为第一遍,您实际上可以仅继续添加线程/进程,直到 CPU 利用率趋于稳定,以确定给定计算机的大致配置。