回答:
1
ような行を出力するので、それから差し引く必要があると思いますUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
。
特定のPIDのスレッド数を取得するには:
$ ps -o nlwp <pid>
どこnlwp
の略番号軽量のプロセス(スレッド)。したがって、ps
別名nlwp
にthcount
どの手段もの、
$ ps -o thcount <pid>
も機能します。
スレッド数を監視する場合は、次のように使用しますwatch
。
$ watch ps -o thcount <pid>
システムで実行されているすべてのスレッドの合計を取得するには:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
watch
コマンド。ただし、thcount
一部の(Red Hat ...)で使用すると失敗する可能性があることに注意してnlwp
ください。
プロセスの各スレッドは、の下にディレクトリを作成します/proc/<pid>/task
。ディレクトリの数を数えると、スレッドの数がわかります。
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l
。<PID>を、取得top
または使用できるプロセスIDに置き換えますps
ps -eLf
シェルでは、システムで現在実行されているすべてのスレッドとプロセスのリストが表示されます。または、top
コマンドを実行してから「H」を押すと、スレッドリストが切り替わります。
-p
必要に応じてこれに何かを追加するのは簡単です。これは、スレッドリストを表示するために最低限必要なものです。
使用する場合:
ps uH p <PID_OF_U_PROCESS> | wc -l
「wc」がカウントしている行の1つが「ps」コマンドのヘッダーであるため、結果から1を引く必要があります。
ps
スレッドの1つとして数えないでください。
jvmtopは他のメトリックの横に現在のjvmスレッド数を表示できます。
最も簡単な方法は、「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]
特定のpidに対してcpuを使用しているスレッドの数を調べようとしている場合は、次のようにします。
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
本当にアクティブなスレッドに興味がある場合-アイドル状態で座ってライブするのではなく、何かを行う場合(ブロックされず、timed_waitingではなく、「スレッドの実行」を報告せず、ストリームがデータを提供するのを実際に待機している)の場合と同様に- -そして、あなたはjstack-activeに興味があるかもしれません。
この単純なbashスクリプトが実行jstack
されてから、ヒューリスティックスによってアイドリングしているように見えるすべてのスレッドが除外され、実際にCPUサイクルを消費しているスレッドのスタックトレースが表示されます。
Linuxシステムでユーザーあたりのスレッド数が必要な場合は、以下を使用する必要があります。
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
ここで、目的のユーザー名を使用します。