Как просмотр потоков полезен в профилировщиках производительности / процессоров?
После того, как я профилирую приложение ASP.NET Core, инструмент JetBrain dotTrace по умолчанию открывает All Calls
вкладка и показывает список тем.
Не могли бы вы уточнить некоторые мои вопросы?
Во время сеанса профилирования я отправил около 100 тыс. Запросов в веб-приложение. Являются ли эти темы (кроме
Main
и некоторые системные потоки, такие какFinalizer
поток) единственные, которые использовались пулом потоков для обслуживания всех этих запросов, основанных на изображении ниже?В идеале я бы предпочел узнать подробности о функции, которая потребляла много ресурсов ЦП (т. Е. Самый горячий метод в сеансе профилирования), поэтому мне интересно, как на самом деле помогает представление этих потоков?
Как вы думаете, могло быть гораздо больше потоков из пула потоков, которые могли бы быть использованы и возвращены обратно в пул потоков, но профилировщик смог только "захватить" информацию о конкретных потоках пула потоков, потому что эти потоки пула потоков были выполняется в течение этого времени? Я говорю это потому, что для запросов ~100K количество показанных здесь потоков кажется меньшим, но я могу ошибаться. (Возможно, это основано на количестве одновременных запросов?)
1 ответ
Представление "Потоки" полезно при использовании реальных потоков в приложении. Например, в WPF основной поток только для диспетчера и ваш пользовательский поток для фоновой работы.
В вашем случае вы все еще можете расширить диспетчеризацию, чтобы увидеть, что выполняется внутри. Вы также можете использовать режим трассировки, чтобы увидеть количество запросов внутри рабочего пула.
Отображаются все потоки, фактически использованные во время вашей записи профилирования, каждый поток выполнит множество запросов.
Для такого использования я предпочитаю режим временной шкалы, чтобы вы могли отфильтровать все ваши запросы и увидеть все потоки, в которых они выполнялись.