Как я могу контролировать количество потоков процесса в Linux? - PullRequest
104 голосов
/ 06 ноября 2008

Я бы хотел отслеживать количество потоков, используемых конкретным процессом в Linux. Есть ли простой способ получить эту информацию, не влияя на производительность процесса?

Ответы [ 15 ]

3 голосов
/ 14 марта 2013

jvmtop может показывать текущее число потоков jvm помимо других показателей.

1 голос
/ 23 октября 2017

Самый простой способ - использовать "htop". Вы можете установить htop (причудливую версию top), которая покажет вам все ваши ядра, процессы и использование памяти.

Нажмите «Shift + H», чтобы показать весь процесс, или нажмите еще раз, чтобы скрыть его. Нажмите клавишу «F4», чтобы найти имя процесса.

Установка в Ubuntu или Debian:

sudo apt-get install htop

Установка на Redhat или CentOS:

yum install htop
dnf install htop      [On Fedora 22+ releases]

Если вы хотите скомпилировать «htop» из исходного кода, вы найдете его здесь .

1 голос
/ 16 февраля 2017

Если вы пытаетесь узнать количество потоков, использующих процессор для данного pid, я бы использовал:

top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
0 голосов
/ 22 декабря 2015

VisualVM может показывать чистые состояния потоков данного процесса JVM

enter image description here

0 голосов
/ 27 октября 2015

Если вам интересны те потоки, которые действительно активны - как при выполнении чего-либо (не заблокировано, не timed_waiting, не сообщает о «потоке запущен», но действительно ожидает потока, чтобы выдать данные) вместо того, чтобы сидеть без дела, но жить - тогда вас может заинтересовать jstack-active .

Этот простой bash-скрипт запускает jstack, а затем отфильтровывает все потоки, которые по эвристике кажутся бездействующими, показывая вам трассировки стека для тех потоков, которые фактически потребляют циклы ЦП.

...