当使用命令运行perf
实用程序时,输出行之一看起来像:
2.088031 task-clock (msec) # 0.700 CPUs utilized
并且如果您使用perf stat --all-cpus --no-aggr
,则每个CPU内核将获得以下行之一,例如:
CPU0 38.518960 cpu-clock (msec) # 0.528 CPUs utilized
CPU1 38.564135 cpu-clock (msec) # 0.529 CPUs utilized
CPU2 38.611806 cpu-clock (msec) # 0.529 CPUs utilized
在两种情况下,我都不明白这是什么意思;我只有一个猜测:
但是这些猜测充满了假设。在两种情况下,这些数字的exact是什么意思?另外,它们如何计算进程线程在内核调用中花费的时间?他们如何考虑在同一内核上工作的同一进程的多个线程?彻底的解释将不胜感激。
“注释”行总是(AFAIK)根据that行上的事件/计数器除以其他值而得出。通常每秒实时一次,因此您可以在指令行上获得指令/秒。但是时间/时间是无量纲的,在这种情况下是利用率。
[单个过程的正常输出是(AFAIK)task-clock / wall-time
=使用的平均内核数。
我认为每个CPU的情况都是相同的想法,cpu-clock / wall-time
= this内核的平均利用率。