3

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

哪种方法最适合测量过程之间的干扰?例如进程 A 和 B 各自重度访问磁盘。因此,并行运行它们可能会比顺序运行(单个运行时)慢。因为瓶颈是硬盘。

如果我不确切知道进程的行为(磁盘密集型、内存密集型或 CPU 密集型),那么哪种方法最适合分析它?

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

就像进程 A 平均单独运行 30 秒,当 100% 与 B 并行时 45 秒,当 20% 并行时 35 秒 .. 等等 ??

比较 L1 和 LLC 缓存未命中、页面错误等几个指标会更好吗?

4

1 回答 1

1

您需要做的是首先确定每个单独程序的限制因素。如果您想同时运行 CPU 密集型和 IO 密集型,它的影响将非常小。如果你想同时运行两个 IO-bound 进程,就会有很多争用。

我写了一个相当详细的答案,关于如何解释“时间[命令]”结果的输出,看看限制因素是什么。它就在这里: 是什么导致我经过的时间比用户时间长得多?

一旦您获得了“时间”程序的输出,您就可以确定哪些可能会相互影响,哪些不会。

于 2012-12-29T23:58:14.473 回答