我有一个可以在不同数量的进程上并行化的分析.预计事情将是IO和CPU密集型(如果有人好奇的话,非常高吞吐量的短读取DNA对齐.)
运行它的系统是48核linux服务器.
问题是如何确定最佳的过程数量,以便最大化总吞吐量.在某些时候,这些过程可能会成为IO限制,因此添加更多过程将没有任何好处,也可能是有害的.
当达到这一点时,我能从标准系统监控工具中判断出来吗?
top(或者可能是不同的工具)的输出是否能够区分IO绑定和CPU绑定进程?我怀疑IO上阻止的进程可能仍然显示100%的CPU利用率.
解决方法:
即使是单个IO绑定进程也很少显示高CPU利用率,因为操作系统已经安排了IO并且通常只是等待它完成.因此,top无法准确区分IO绑定进程和仅仅定期使用CPU的非IO绑定进程.事实上,一个可怕的超载所有IO绑定进程的系统,几乎无法完成任何事情,可能会表现出非常低的CPU利用率.
仅使用top作为第一遍,您实际上只能继续添加线程/进程,直到关闭CPU利用率以确定给定计算机的近似配置.
标签:io,linux,cpu,performance
来源: https://codeday.me/bug/20190610/1212000.html