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

时间:2010-12-29 16:50:50

标签: linux performance io cpu

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

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

您可以使用iostat和vmstat等工具来显示I / O上花费了多少时间。添加超过您需要的流程通常没有害处,但效益会降低。您应该测量吞吐量与流程,作为整体效率的衡量标准。

答案 2 :(得分:1)

即使是单个IO绑定进程也很少显示高CPU利用率,因为操作系统已经安排了IO并且通常只是等待它完成。因此,top无法准确区分IO绑定进程和仅仅定期使用CPU的非IO绑定进程。事实上,一个系统可怕地超载所有IO绑定进程,几乎无法完成任何事情,可能会表现出非常低的CPU利用率。

仅使用top作为第一遍,您实际上只能继续添加线程/进程,直到关闭CPU利用率以确定给定计算机的近似配置。