Linux IO阻塞进程在';顶部';输出?
我有一个可以在不同数量的进程上并行化的分析。预计事情将是IO和CPU密集型的(如果有人好奇的话,非常高的吞吐量短读DNA对齐) 运行此服务器的系统是一个48核的linux服务器 问题是如何确定最佳进程数,以使总吞吐量最大化。在某一点上,流程可能会受到IO限制,因此添加更多的流程既没有好处,也可能有害 我能从标准系统监控工具中判断何时达到该点吗?Linux IO阻塞进程在';顶部';输出?,linux,performance,io,cpu,Linux,Performance,Io,Cpu,我有一个可以在不同数量的进程上并行化的分析。预计事情将是IO和CPU密集型的(如果有人好奇的话,非常高的吞吐量短读DNA对齐) 运行此服务器的系统是一个48核的linux服务器 问题是如何确定最佳进程数,以使总吞吐量最大化。在某一点上,流程可能会受到IO限制,因此添加更多的流程既没有好处,也可能有害 我能从标准系统监控工具中判断何时达到该点吗? top(或者可能是另一个工具)的输出是否能让我区分IO绑定进程和CPU绑定进程?我怀疑IO上阻塞的进程可能仍会显示100%的CPU利用率。您可以使用io
top(或者可能是另一个工具)的输出是否能让我区分IO绑定进程和CPU绑定进程?我怀疑IO上阻塞的进程可能仍会显示100%的CPU利用率。您可以使用iostat和vmstat等工具来显示阻塞的进程在I/O上花费了多少时间。添加超出您需要的进程通常没有害处,但好处会减少。您应该衡量吞吐量与流程,作为总体效率的衡量。当一个流程在IO上被阻塞时,它没有运行,因此不考虑时间。如果有另一个进程可以运行,那么它将运行;如果没有,则将时间计为“IO等待”,这是一个全局统计
IO等待将是一个有用的监视对象。它显示在顶部的标题中,类似于%iw。您可以使用iostat和vmstat等工具对其进行更详细的监控。Serverfault可能是一个更好的询问问题的地方。即使是单个IO绑定的进程也很少显示高CPU利用率,因为操作系统已经安排了其IO,并且通常只是等待它完成。因此top无法准确区分IO绑定进程和仅定期使用CPU的非IO绑定进程。事实上,一个被所有IO绑定的进程严重超载、几乎无法完成任何事情的系统可能会表现出非常低的CPU利用率
仅使用top作为第一步,您实际上只需不断添加线程/进程,直到CPU利用率降低,以确定给定机器的近似配置。通常,非阻塞线程的数量应等于处理器的数量。您是否可以使用非阻塞IO?如果您能将其应用到您的体系结构中,它可能会简化事情。