如何测量进程之间的干扰

3

在并行系统中,每个进程对其他进程都产生影响,因为它们都竞争诸如cpu缓存、内存、磁盘I/O、网络等多种稀缺资源。

什么方法最适合测量进程之间的干扰?例如,进程A和B都会大量访问磁盘。因此,同时运行它们可能比顺序运行(单个运行时长)要慢,因为瓶颈是硬盘。

如果我不知道一个进程的确切行为(磁盘、内存或CPU密集型),那么分析它的最佳方法是什么?

测量单个运行时间并比较每个并行进程的相对份额?

例如,进程A单独运行平均需要30秒,100%并行运行B需要45秒,20%并行需要35秒,等等?

比较几个指标,如L1和LLC缓存缺失、页面错误等,是否更好?


这是一个平台无关的问题吗?如果目标是Windows平台,我猜它确实提供了单独的磁盘利用率指标。这就是为什么“资源监视器”可以绘制每个进程级别的磁盘活动图表。 - Ankush
你可以测量它,只需观察所消耗的时间。但是这种测量是相当无用的,它会非常、非常地重复。 - Hans Passant
@Ankush,主要平台是Linux。 - nairboon
1个回答

1
你需要做的是首先确定每个单独程序的限制因素。如果你想同时运行CPU-bound和IO-bound,它的影响将非常小。如果你想同时运行两个IO-bound进程,那么就会有很多争用。
我写了一个相当详细的答案,介绍如何解释“time [command]”结果的输出,以查看什么是限制因素。这里是链接:What caused my elapsed time much longer than user time? 一旦你从“time”命令中获得了输出,你就可以确定哪些程序可能会相互干扰,哪些不会。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接