我想知道我的程序是否在多个核心上并行运行。我可以使用 perf 工具来报告计算中使用了多少个核心,但是如果它们同时使用 (并行)则不行。
如何做到这一点?
答案 0 :(得分:1)
您可以尝试使用该命令
top
在程序运行时在另一个终端中。它将显示计算机上所有核心的使用情况。
答案 1 :(得分:1)
一些可能的解决方案:
在执行程序时,在另一个终端上使用htop
。 htop
分别显示每个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
那么具体,并且对于没有充分利用可用处理能力的并行程序也有同样的弱点。