在并行系统中,每个进程都会对其他进程产生影响,因为它们都会竞争几个稀缺资源,如cpu-caches,内存,磁盘I / O,网络等。
哪种方法最适合测量过程之间的干扰?如过程A& B每个都大量访问磁盘。因此,并行运行它们可能会慢于运行顺序(单个运行时)。因为瓶颈是硬盘。
如果我不确切知道进程的行为(磁盘,内存或CPU密集型),最好分析哪种方法?
测量单个运行时并比较每个并行进程的相对份额?
类似于进程A单独运行30s,当与B 45s平行100%时,20%并行运行35s等等。
比较L1和amp;等几个指标会更好吗? LLC缓存未命中,页面错误等等。
答案 0 :(得分:1)
您需要做的是首先确定每个程序的限制因素。如果你想同时运行CPU绑定和IO绑定,它将产生很小的影响。如果你想运行两个IO绑定进程,同时会有很多争用。
我写了一个相当详细的答案,关于如何解释“time [command]”结果的输出,看看是什么限制因素。就在这里:What caused my elapsed time much longer than user time?
一旦你从程序的“时间”获得了输出,你就可以确定哪些可能会相互踩踏,哪些不是。