LINUX.ORG.RU

Как в htop увидеть потребление процессора основным потоком приложения?

 ,


1

2

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

В древовидном режиме htop показывает загрузку процессора дочерними потоками, однако для основного потока (являющегося корнем поддерева) он показывает суммарную загрузку процессора всеми потоками данного процесса.

Есть ли какая-то возможность интерактивно посмотреть на загрузку процессора именно основным потоком?

Приходит в голову только вычесть из суммы значения всех остальных, но это плохо решает задачу «Интерактивный анализ использования CPU основным потоком при различных действиях»

Обычный top имеет режим показа потоков (клавиша H).

iliyap ★★★★★ ()
Ответ на: комментарий от Chaser_Andrey

top сработал, единственное неудобство - не умеет сортировать потоки внутри процесса по загрузке cpu. К счастью, у меня их меньше двух десятков.

Насчёт фичреквеста я думал, но у меня нет идеи куда там это визуально запихнуть. В строчке с основным процессом и так все поля информативны.

Разве что для процессов с более чем одним потоком отображать сам процесс с префиксом (cumulative) а в список потоков добавить основной с префиксом типа (main thread). Возможно не main, а какой-то другой термин.

GPFault ★★ ()
Ответ на: комментарий от anonymous

Нашёл, действительно можно. Вначале я пытался как в htop - включить отображение потоков, включить forest view и отсортировать по CPU - но так не сортируется.

В результате проблема решилась top -p `pidof my_process` и включением отображения потоков.

GPFault ★★ ()
Ответ на: комментарий от GPFault

может я не понимаю о чем речь?

там сортировка по CPU-usage используется по умолчанию, хоть в режиме отображения процессов, хоть — тредов; если ты включил другую сортировку, например по используемой памяти, то наверно ты знал, что делал, и переключиться на CPU-order ничего не стоит

anonymous ()
Ответ на: комментарий от anonymous

Задача стояла - посмотреть сколько едят потоки определённого процесса. Если к состоянию по умолчанию добавить режим отображения потоков - получим отсортированные по использованию cpu вперемешку все потоки всех процессов, а не только изучаемого.

Задача решается сортировкой/группировкой вначале по PID (чтоб сгруппировать вместе все нужные потоки), а в пределах одного PID - по использованию cpu.

forest view (V) производит группировку по PID. Однако сортировка второго уровня среди уже сгруппированного не производится. Поэтому и пришлось провести группировку по PID при помощи опции -p

$ top -v
  procps-ng version 3.3.3
GPFault ★★ ()
Последнее исправление: GPFault (всего исправлений: 1)
Ответ на: комментарий от GPFault

получим отсортированные по использованию cpu вперемешку все потоки всех процессов, а не только изучаемого

ну дык, они же отсортированы как требовалось!

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

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.