XPERFVIEW: В чем разница между выборкой CPU и использованием процессора?

StackOverflow https://stackoverflow.com/questions/3567093

  •  01-10-2019
  •  | 
  •  

Вопрос

Этот вопрос относится к XPERF и XPERFVIEW, утилиты, которые являются частью панели инструментов Performance Windows (в свою очередь, часть Windows SDK 7.1).

Сравнивая два диаграмма, «выборка процессора по никам» и «Использование процессора по никому», есть несколько различий, которые я не понимаю. Я буду использовать Audiodg.exe в качестве примера.

  1. В потоках погиблится только один поток для Audiodg на диаграмме выборки процессора; Диаграмма использования ЦП показывает несколько потоков аудиоз.

  2. У обоих графиков есть ось Y, отмеченная «% использования», но измерения отличаются. Обычно использование% для заданного потока ниже на диаграмме выборки процессора, чем на диаграмме использования CPU.

  3. Сводная таблица отбора проб CPU показывает вес и массу% для каждого модуля / процесса. Если я загружаю символы, я могу накопаться довольно глубоко в процессе Audiodg. Сводная таблица агрегата процессора CPU (запущена из графика используемого процессора CPU) показывает использование процессора и% использования процессора - вес недоступен. (И наоборот, использование CPU не доступен на таблице Summary отбора данных процессора.) Я не могу выкопать так глубоко в AUDIODG - я вижу только основные потоки и несколько потоков NTDLL.dll.

  4. Числа для любого процесса в% использования процессора и% и% весовых колонн всегда разные. Иногда они отличаются более чем на 75%.

Итак, мои вопросы ... Какова надежная мера использования ЦП здесь? Разве номера использования ЦП не получены из образцов ЦП? Разве номественные номера не должны как-то отношения?

Это было полезно?

Решение

XPERF делает это немного запутанным, это мое понимание того, что происходит:

  • Данные образца CPU, включенные с флагом ядра профиля. Данные образца CPU собираются на одном регулярном интервале, и записывает информацию о том, что процессор делал в то время (например, процесс, идентификатор потока и CallStack во время выборки.)
  • Данные переключателя контекста, включенные с флагом CSwitch ядра. Это записывает данные о каждом контекстном коммутаторе, который происходит (например, кто был включен / out и out of the callstacks.)

Проборка процессора по ветру Показывает количество событий профиля, которые были записаны для каждого потока, агрегировали в течение некоторого промежутка времени времени на продолжительность трассировки. Например, если Audiodg выполнил 10% времени в течение 2 секунд, мы ожидаем, что посмотрим около 10 «% использования» в течение этого времени. Однако, поскольку это основано на выборке, возможно, что на каждом событии образца потоки из другого процесса произошли, чтобы выполняться - другими словами, 10% было «пропущено» с событиями образцов.

Использование CPU потоком рассчитывается с использованием данных контекста. «Использование» - это количество времени между контекстом, переключенным, а затем позже (и, конечно, эти данные агрегируются на некотором небольшом интервале).

Есть преимущества для каждой данные:

  • Проборка процессора на самом деле скажет вам, что такое тема делает во время образца, потому что он собирает стеки вызова в течение выполнение потока. Информация контекстной коммутации будет сообщать вам только тогда, когда поток будет включен или выключен, но ничего нет.
  • Информация контекстной переключателя расскажет вам точно, сколько времени каждый поток должен выполнить. Эти данные верны. Отбор проб, конечно, только вероятностей.

Итак, чтобы ответить на ваш вопрос, диаграмма использования CPU является «более точным» для понимания того, сколько времени каждый поток выполняется. Однако не исключайте использование данных выборки, потому что это может быть гораздо более полезным для понимания того, где ваши темы фактически проводят свое время! Для данных отбора проб процессора суммарная таблица более ценной, потому что она покажет вам стеки. Для данных использования CPU график, вероятно, более полезна, чем сводная таблица.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top