- Как я могу отслеживать количество потоков процесса в Linux?
- 18 ответы
- Просмотр потоков процесса в Linux
- Просмотр потоков процесса в ps
- Просмотр потоков процесса в htop
- Как посмотреть потоки процесса в Linux
- Потоки процессов в Linux
- 1. Утилита ps
- 2. Утилита top
- 3. Утилита htop
- Просмотр потоков процесса в Linux
- Просмотр потоков процесса в ps
- Просмотр потоков процесса в htop
Как я могу отслеживать количество потоков процесса в Linux?
Я хотел бы отслеживать количество потоков, используемых конкретным процессом в Linux. Есть ли простой способ получить эту информацию, не влияя на производительность процесса?
Как насчет того, чтобы процесс приложения выполнялся только на короткое время? (Скажите 2 секунды.) — user2023370
18 ответы
Я считаю, тебе следует вычесть 1 из него, потому что он печатает строку вроде USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND для заголовка таблицы. — AhmetB – Google
-1 Зачем направлять вывод в wc когда ты мог просто ps -o thcount
andrzejdoro, вы можете включить его в настройках htop, просто нажмите F2 (настройка) — Настройка столбцов — выберите NLWP в Доступных столбцах и переместите его в Активированные столбцы — F10 для сохранения — славянский
где nlwp стенды для Количество легких процессов (потоков), таким образом ps псевдонимы nlwp в thcount Это означает, что
$ ps -eo nlwp | tail -n +2 | awk ' < num_threads += $1 >END < print num_threads >'
Самый полезный ответ здесь. Особенно watch команда. Однако обратите внимание, что использование thcount может потерпеть неудачу для некоторых (Red Hat . ), хотя nlwp работал у меня. — Джошуа Детвайлер
Чтобы получить идентификатор процесса с заданным именем, используйте pidof or pgrep . Например, ps -o nlwp $(pidof chrome) or ps -o nlwp $(pgrep chrome) . — хмофрад
Каждый поток в процессе создает каталог в /proc/
Чтобы добавить к приведенному выше комментарию. Вы можете использовать эту команду, чтобы узнать количество потоков: find /proc/
cat /proc//status | grep Threads
ps -eLf в оболочке должен предоставить вам список всех потоков и процессов, которые в настоящее время выполняются в системе. Или вы можете бежать top затем нажмите «H», чтобы переключить списки цепочек.
Это соус для меня. Я не хочу ограничивать это только одним процессом. Легко добавить -p к этому, если необходимо, или что-нибудь еще. Это минимум, который вам нужен, чтобы увидеть список потоков. — Эрик Робертсон
Добро пожаловать в StackOverflow. Возможно, это должен быть комментарий к ответу slav0nic. Однако, насколько я понимаю, когда вы впервые присоединяетесь к SO, вы (все еще) не можете комментировать ответы, пока не приобретете некоторую репутацию, поэтому добавление ответа — это все, что вы можете сделать. Ты прав; вы не должны считать строку заголовка из ps как одна из ниток. — Джонатан Леффлер
$ ps H p pid-id H — перечисляет все отдельные потоки в процессе or $cat /proc/pid-id/status pid-id — это идентификатор процесса например .. (усеченный вывод ниже)
root@abc:~# cat /proc/8443/status Name: abcdd State: S (sleeping) Tgid: 8443 VmSwap: 0 kB Threads: 4 SigQ: 0/256556 SigPnd: 0000000000000000
JStack довольно недорогой — один из вариантов — направить вывод через grep, чтобы найти активные потоки, а затем передать через wc -l. Более наглядно — это JConsole, которая отображает количество потоков для данного процесса.
В отличие от других ps основанные на ответах, здесь нет необходимости вычитать 1 от его выхода, поскольку нет ps строка заголовка благодаря -o pid= опцию.
Новые дистрибутивы JDK поставляются с JConsole и VisualVM. Оба являются фантастическими инструментами для извлечения грязных деталей из запущенного Java-процесса. Если вам нужно сделать это программно, изучите JMX.
Самый простой способ — использовать «htop». Вы можете установить «htop» (более интересная версия топа), которая покажет вам все ваши ядра, процессы и использование памяти. Нажмите «Shift + H», чтобы показать весь процесс, или нажмите еще раз, чтобы скрыть его. Нажмите клавишу «F4» для поиска имени вашего процесса. Установка на Ubuntu или Debian:
yum install htop dnf install htop [On Fedora 22+ releases]
- Запустите htop.
- Войдите в меню настройки, нажав F2.
- В крайнем левом столбце выберите «Столбцы».
- В крайнем правом столбце выберите столбец, который будет добавлен к основному результату мониторинга. «NLWP» — это то, что вы ищете.
- Нажмите F10.
Если вы пытаетесь узнать количество потоков, использующих процессор для данного pid, я бы использовал:
top -bc -H -n2 -p | awk '' | sort -u | wc -l
Если вас интересуют те темы, которые действительно активный — как если бы вы что-то делали (не заблокировано, не timed_waiting, не сообщали «поток запущен», но действительно ожидали, пока поток предоставит данные), а не сидите без дела, но живете — тогда вас может заинтересовать jstack-активный.
Этот простой сценарий bash запускается jstack затем отфильтровывает все потоки, которые по эвристике кажутся простаивающими, показывая вам трассировку стека для тех потоков, которые фактически потребляют циклы ЦП.
Если вам нужно количество потоков на пользователя в системе Linux, вы должны использовать:
в то время как используйте желаемое имя пользователя.
Если вы ищете количество потоков для нескольких процессов, другие ответы вам не подойдут, поскольку вы не увидите имена процессов или PID, что делает их довольно бесполезными. Используйте вместо этого:
Чтобы наблюдать за изменениями вживую, просто добавьте watch :
VisualVM может показывать четкие состояния потоков данного процесса JVM
самоиндуцированное избиение? черт! — Эндрю Скотт Эванс
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками linux multithreading monitor or задайте свой вопрос.
Просмотр потоков процесса в Linux
Потоки — абстракция программирования для параллельного выполнения в операционных системах, они обеспечивают распараллеливание внутри программы, эти потоки совместно используют определенные ресурсы (например, адресное пространство памяти, открытые файлы) разделяя между собой.
Просмотр информации по потокам позволяет просматривать детали по потреблению ресурсов, например, использование ЦП/памяти.
В Linux потоки (LWP), созданные в рамках программы, будут иметь тот же «идентификатор группы потоков», что и PID программы.
Для планировщика ядра Linux потоки — это не что иное, как стандартные процессы, которые совместно используют определенные ресурсы.
Просмотр потоков процесса в ps
В команде ps параметр -T включает просмотр потоков. Следующая команда выводит список всех потоков, созданных процессом с .