리눅스에서 프로세스의 스레드 수를 어떻게 모니터링 할 수 있습니까?
Linux에서 특정 프로세스가 사용하는 스레드 수를 모니터링하고 싶습니다. 프로세스 성능에 영향을주지 않고이 정보를 쉽게 얻을 수있는 방법이 있습니까?
시험
ps huH p <PID_OF_U_PROCESS> | wc -l
또는 멈춤
주어진 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 }'
프로세스의 각 스레드는 아래에 디렉토리를 만듭니다 /proc/<pid>/task
. 디렉토리 수를 세면 스레드 수가 있습니다.
cat /proc/<PROCESS_PID>/status | grep Threads
ps -eLf
쉘에서 현재 시스템에서 실행중인 모든 스레드와 프로세스의 목록을 제공해야합니다. 또는 top
command를 실행 한 다음 'H'를 눌러 스레드 목록을 토글 할 수 있습니다 .
JStack은 매우 저렴합니다. 하나의 옵션은 grep을 통해 출력을 파이프하여 활성 스레드를 찾은 다음 wc -l을 통해 파이프하는 것입니다.
보다 그래픽 적으로 주어진 프로세스의 스레드 수를 표시하는 JConsole이 있습니다.
사용하는 경우 :
ps uH p <PID_OF_U_PROCESS> | wc -l
"wc"행 중 하나가 counting "ps"명령의 헤더이므로 결과에서 1을 빼야합니다.
주어진 프로세스의 스레드 수를 표시하는 명령은 다음과 같습니다.
ps -L -o pid= -p <pid> | wc -l
다른 ps
기반 답변 과 달리 옵션 덕분에 헤더 행 1
이 없으므로 출력에서 빼지 않아도됩니다 .ps
-o pid=
$ ps H p pid-id
H-프로세스의 모든 개별 스레드를 나열합니다
또는
$cat /proc/pid-id/status
pid-id는 프로세스 ID입니다
예 : (아래 출력 잘라 내기)
root@abc:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
최신 JDK 배포판에는 JConsole 및 VisualVM이 제공됩니다. 둘 다 실행중인 Java 프로세스에서 더러운 세부 정보를 얻는 환상적인 도구입니다. 프로그래밍 방식으로이 작업을 수행해야하는 경우 JMX를 조사하십시오.
jvmtop 은 다른 메트릭 외에도 현재 jvm 스레드 수를 표시 할 수 있습니다.
주어진 pid에 대해 CPU를 사용하여 스레드 수를 찾으려면 다음을 사용하십시오.
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
가장 쉬운 방법은 "htop"을 사용하는 것입니다. 모든 코어, 프로세스 및 메모리 사용량을 보여주는 "htop"(보다 멋진 버전의 top)을 설치할 수 있습니다.
"Shift + H"를 눌러 모든 프로세스를 표시하거나 다시 눌러 숨 깁니다. 프로세스 이름을 검색하려면 "F4"키를 누르십시오.
우분투 또는 데비안에 설치하기 :
sudo apt-get install htop
Redhat 또는 CentOS에 설치 :
yum install htop
dnf install htop [On Fedora 22+ releases]
If you want to compile "htop" from source code, you will find it here.
If you're interested in those threads which are really active -- as in doing something (not blocked, not timed_waiting, not reporting "thread running" but really waiting for a stream to give data) as opposed to sitting around idle but live -- then you might be interested in jstack-active.
This simple bash script runs jstack
then filters out all the threads which by heuristics seem to be idling, showing you stack traces for those threads which are actually consuming CPU cycles.
VisualVM can show clear states of threads of a given JVM process
참고URL : https://stackoverflow.com/questions/268680/how-can-i-monitor-the-thread-count-of-a-process-on-linux
'development' 카테고리의 다른 글
어떤 JavaScript 이벤트가 발생했는지 확인하는 방법 (0) | 2020.07.25 |
---|---|
nodeJs 콜백 간단한 예 (0) | 2020.07.25 |
Java gradle 프로젝트를 만드는 방법 (0) | 2020.07.25 |
각도에서 부모 범위 변수 업데이트 (0) | 2020.07.25 |
python pandas : 열 A에서 중복을 제거하고 열 B에서 가장 높은 값을 유지 (0) | 2020.07.24 |