Когда вы запускаете утилиту perf
с командой, одна из выходных строк, которую вы получаете, выглядит следующим образом:
2.088031 task-clock (msec) # 0.700 CPUs utilized
, и если вы используете perf stat --all-cpus --no-aggr
, вы получаете одну из этих строк на процессор ядро, например:
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
Я не понимаю, что это значит, точно - в обоих случаях; У меня есть только предположение:
- В агрегированном случае это «Среднее число процессоров, на которых были запущены потоки этого процесса между настенным временем запуска процесса и выходом из процесса»?
- В дезагрегированном случае - это «доля времени, в течение которого какой-либо поток процесса выполнялся на указанном ядре ЦП»?
Но эти догадки полны предположения. Каково точное значение этих цифр в обоих случаях? Кроме того, как они учитывают время, потраченное на вызовы ядра потоками процесса? Как они учитывают несколько потоков одного процесса, работающих на одном ядре? Подробное объяснение будет с благодарностью.