如何测量程序是否在Linux中的多个内核上并行运行?

时间:2015-06-21 17:59:43

标签: linux parallel-processing benchmarking perf

我想知道我的程序是否在多个核心上并行运行。我可以使用 perf 工具来报告计算中使用了多少个核心,但是如果它们同时使用 (并行)则不行。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用该命令     top 在程序运行时在另一个终端中。它将显示计算机上所有核心的使用情况。

答案 1 :(得分:1)

一些可能的解决方案:

  • 在执行程序时,在另一个终端上使用htophtop分别显示每个CPU上的负载,因此在一个空闲的系统上,您可以判断执行程序是否涉及多个内核。

    它还能够单独显示每个线程,并且聚合了程序的总体CPU使用率,这意味着并行程序通常会显示CPU使用百分比超过100%。

  • 使用time命令或shell内置程序执行程序。例如,在我的系统上的bash下:

    $ dd if=/dev/zero bs=1M count=100 2>/dev/null | time -p xz -T0 > dev/null
    real 0.85
    user 2.74
    sys 0.14
    

    很明显,总CPU时间(user + sys)明显高于经过的挂钟时间(real)。这表明并行使用多个核心。但请记住,尽管同时使用多个内核,但效率低或I / O受限的程序可能会降低总体CPU使用率

  • 使用top并监控CPU使用百分比。这种方法甚至不如time那么具体,并且对于没有充分利用可用处理能力的并行程序也有同样的弱点。