perf输出中“ 1.234个已使用的CPU”是什么意思?

问题描述 投票:1回答:1

当使用命令运行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

在两种情况下,我都不明白这是什么意思;我只有一个猜测:

  1. 在汇总情况下,是否为“在进程启动和退出之间的挂钟时间之间,正在运行该进程的线程的平均CPU数量”?
  2. 在分类的情况下,是“进程的某个线程在所列的CPU内核上执行的时间的一部分”?

但是这些猜测充满了假设。在两种情况下,这些数字的exact是什么意思?另外,它们如何计算进程线程在内核调用中花费的时间?他们如何考虑在同一内核上工作的同一进程的多个线程?彻底的解释将不胜感激。

performance performance-testing perf
1个回答
1
投票

“注释”行总是(AFAIK)根据that行上的事件/计数器除以其他值而得出。通常每秒实时一次,因此您可以在指令行上获得指令/秒。但是时间/时间是无量纲的,在这种情况下是利用率。

[单个过程的正常输出是(AFAIK)task-clock / wall-time=使用的平均内核数。

我认为每个CPU的情况都是相同的想法,cpu-clock / wall-time= this内核的平均利用率。

© www.soinside.com 2019 - 2024. All rights reserved.