【问题标题】:How to measure interference between processes如何测量进程之间的干扰
【发布时间】:2012-10-17 08:36:53
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 这个平台无关问题吗?如果目标是 Windows 平台,我想它确实提供了单独的磁盘利用率指标。这就是“资源监视器”如何绘制每个进程级别的磁盘活动图。
  • 你可以测量它,只是观察消耗的时间。但是测量是毫无用处的,它会重复非常非常糟糕。
  • @Ankush 主要平台是 Linux

标签: performance computer-science performance-testing measurement perf


【解决方案1】:

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

我写了一个相当详细的答案,关于如何解释“时间[命令]”结果的输出,看看限制因素是什么。在这里:What caused my elapsed time much longer than user time?

一旦您对程序“计时”得到输出,您就可以确定哪些可能会相互影响,哪些不会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多