Чем полезен просмотр потоков в профилировщиках производительности/процессора?

После профилирования приложения ASP.NET Core инструмент JetBrain dotTrace по умолчанию открывает вкладку All Calls и показывает список потоков.

Не могли бы вы уточнить некоторые из моих вопросов?

  • Во время сеанса профилирования я отправил веб-приложению около 100 000 запросов. Являются ли эти потоки (кроме Main и некоторых системных потоков, таких как поток Finalizer) единственными, которые использовались пулом потоков для обслуживания всех этих запросов на основе изображения ниже?

  • В идеале я бы предпочел знать подробности функции, которая занимает много ресурсов ЦП (то есть самый популярный метод в сеансе профилирования), поэтому я продолжаю задаваться вопросом, как на самом деле помогает это представление потоков?

  • Как вы думаете, могло ли быть намного больше потоков из пула потоков, которые могли бы быть использованы и возвращены обратно в пул потоков, но профилировщик смог «захватить» информацию только о конкретных потоках пула потоков, потому что эти потоки пула потоков были выполнение за это время? Я говорю это, потому что для ~ 100 тыс. запросов количество потоков, показанное здесь, кажется меньше, но я могу ошибаться. (Возможно, это основано на количестве одновременных выполненных запросов?)

введите здесь описание изображения

введите здесь описание изображения


person aspnetuser    schedule 02.06.2018    source источник
comment
Если вы использовали режим выборочного профилирования, то эти потоки — это те, которые появились в образцах ЦП. Есть небольшой шанс, что были задействованы другие потоки, но если они не отображаются в этой трассировке, вам не следует о них беспокоиться.   -  person Igor Labutin    schedule 04.06.2018


Ответы (1)


Представление потоков полезно, когда вы используете настоящие потоки в своем приложении. Например, в WPF основной поток предназначен только для диспетчера, а ваш собственный поток — для фоновой работы.

В вашем случае вы все равно можете развернуть диспетчер, чтобы увидеть, что выполняется внутри. Вы также можете использовать режим трассировки, чтобы увидеть количество запросов внутри работника пула.

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

Для такого использования я предпочитаю режим временной шкалы, чтобы вы могли фильтровать все свои запросы и видеть все потоки, в которых они выполнялись.

person Whiletrue    schedule 23.11.2018