Xperf немного сбивает с толку, вот мое понимание того, что происходит:
- Образцы данных процессора, включенные с флагом ядра PROFILE. Данные выборки ЦП собираются через некоторый регулярный интервал и записывают информацию о том, что ЦП делал в это время (например, процесс, идентификатор потока и стек вызовов во время выборки.)
- Данные переключения контекста, включенные с флагом ядра CSWITCH. Он записывает данные о каждом происходящем переключении контекста (например, кто был включен / выключен и стеки вызовов).
Выборка ЦП по потоку показывает количество событий профиля, которые были записаны для каждого потока, агрегированных за некоторый интервал времени для продолжительности трассировки. Например, если audiodg выполнял 10% времени в течение 2 секунд, мы ожидаем увидеть около 10% использования за это время. Однако, поскольку это основано на выборке, возможно, что при каждом событии выборки выполнялись потоки из другого процесса - другими словами, 10% «пропустили» события выборки.
Загрузка ЦП по потокам рассчитывается с использованием данных переключения контекста. «Использование» - это промежуток времени между включением и отключением контекста (и, конечно, эти данные агрегируются за некоторый небольшой интервал).
Есть преимущества для каждой информации:
- Выборка ЦП фактически скажет вам, что поток делает во время выборки, поскольку он собирает стеки вызовов во время выполнения потока. Информация о переключении контекста скажет вам только, когда поток будет включен или выключен, но ничего между.
- Информация о переключении контекста точно скажет, сколько времени должен выполнить каждый поток. Эти данные верны. Выборка, конечно, только вероятностная.
Итак, чтобы ответить на ваш вопрос, диаграмма использования ЦП «более точна» для понимания того, сколько времени выполнялся каждый поток. Тем не менее, не исключайте использование данных выборки, потому что это может быть гораздо полезнее для понимания того, где ваши потоки фактически проводят свое время! Для данных выборки ЦП сводная таблица является более ценной, потому что она покажет вам стеки. Для данных об использовании процессора диаграмма, вероятно, более полезна, чем сводная таблица.
Надеюсь, это поможет!