특정 프로세스의 CPU 사용율이 임계치 이상으로 높아질 경우
프로스세스내부의 스레드(Thread) CPU 사용을 측정할 필요가 있다.
프로세스내의 스레드(Light Weight Process) CPU 사용률 확인해보자
먼저 top 명령으로 프레스별 CPU 사용율을 확인한다 (top이 없을 경우 설치한다)
last pid: 11208; load averages: 1.60, 1.43, 1.68
16:38:55
182 processes: 176 sleeping, 3 running, 1 zombie, 2 on cpu
CPU states: 0.0% idle, 85.8% user, 13.7% kernel, 0.5% iowait, 0.0% swap
Memory: 8192M real, 6342M free, 556M swap in use, 5620M swap free
PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
1338 root 135 59 0 46M 32M run 74:02 47.88% emsd
11202 bbb 1 0 16 14M 12M cpu/2 0:00 1.11% nnsd
5879 abc 1 59 0 20M 19M sleep 3:55 1.05% hanterm
5838 abc 5 59 0 11M 9832K sleep 0:16 0.39% emsd
10684 root 1 59 0 2944K 1896K cpu/0 0:00 0.30% top
235 root 126 59 0 5840K 5048K sleep 13:35 0.20% acb
22565 def 1 11 16 17M 17M sleep 4:56 0.20% hanterm
5885 cider 1 59 0 16M 16M sleep 0:00 0.14% hanterm
29017 root 1 59 0 2952K 1880K sleep 0:10 0.08% top
11174 def 1 11 16 1448K 1288K sleep 0:00 0.07% make
8776 root 133 59 0 38M 23M run 0:01 0.05% ccss
25002 root 135 59 0 60M 45M run 0:15 0.05% ccss
11074 aaa 1 11 16 1416K 1256K sleep 0:00 0.04% make
2603 root 26 59 0 43M 41M sleep 11:31 0.03% oaa
PID : 1338 프로세스가 CPU를 47.88%를 사용하고 있다.
프로세스내의 스레드별 CPU 사용율을 확인하려면 아래와 같이 수행한다.
$ prstat -L -p 1338 // prstat -L -p [프로세스ID]
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
13389 root 46M 32M run 20 0 1:14:34 47% emsd/145
13389 root 46M 32M sleep 59 0 0:00:00 0.1% emsd/46
13389 root 46M 32M sleep 59 0 0:00:04 0.0% nmsd/69
13389 root 46M 32M sleep 59 0 0:00:00 0.0% nmsd/133
13389 root 46M 32M sleep 59 0 0:00:00 0.0% nmsd/111
13389 root 46M 32M sleep 59 0 0:00:00 0.0% nmsd/67
13389 root 46M 32M sleep 59 0 0:00:00 0.0% nmsd/66
.....
Total: 1 processes, 135 lwps, load averages: 2.16, 1.68, 1.74
1338 라는 한개의 프로세스 내에 여러 스레드가 구동중임을 알 수 있으며,
그 중에 특정 145 번 스레드(LWPID)가 CPU를 47%를 사용하고 있음을 확인한다.
다음 아래 명령으로 각 스레드내에서 하고 있는 상황을 확인한다.
위에서의 145번 스레드가 무슨 일을 하길래, CPU를 47%를 잡어먹고 있는지를 확인할 수 있다.
# pstack 1338 // pstack [프로세스 ID]
----------------- lwp# 145 / thread# 145 --------------------
00036488 __1cbDACE_Hash_Map_Iterator_Base_Ex4CinJLogicInfo_nIACE_Hash4Ci__nMACE_Equal_To4Ci__nTACE_RW_Thread_Mutex__Jforward_i6M_i_ (f487b62c, 1897d8, 0, 0, 0, 0) + e8
fecf3f9c __1cXACE_Hash_Map_Manager_Ex4CinJLogicInfo_nIACE_Hash4Ci__nMACE_Equal_To4Ci__nTACE_RW_Thread_Mutex__Fbegin6M_nYACE_Hash_Map_Iterator_Ex4Cin0A_n0B_n0C_n0D____ (f487b62c, 1897d8, c640d7f, 0, c640d7f, 1897d8) + c
fecee360 __1cSFinalStatusDataMapPupdateLogicInfo6Miic_v_ (189770, f487b620, ff330d90, fed9e440, fed69366, 1897d8) + dc
fecedf54 __1cSFinalStatusDataMapQupdateItemStatus6Mic_v_ (189770, 0, 4, fed68ed8, f487b7ec, f487b7f8) + 154
fed32274 __1cVCFinalGoNogoStatusMgrQinsertStatusData6Mic_i_ (1894b0, 4e2d, 1, 1896c0, 0, 0) + 1c
fed32148 __1cVCFinalGoNogoStatusMgrRparsingStatusData6MpnRACE_Message_Block__i_ (1894b0, 340e58, fed7e5e8, f487bd10, 0, d0) + 278
fed31e70 __1cVCFinalGoNogoStatusMgrDsvc6M_i_ (1894b0, 0, 2d6748, fed9e440, b38, 800) + c8
ff26da44 __1cNACE_Task_BaseHsvc_run6Fpv_1_ (1894b0, 1, 0, 0, 0, 0) + 64
ff17d720 __1cSACE_Thread_AdapterIinvoke_i6M_pv_ (309068, bbd98, 0, 0, 0, 0) + c0
ff17d5fc __1cSACE_Thread_AdapterGinvoke6M_pv_ (309068, fd746034, 0, 0, 0, 0) + f4
ff10d5a0 ace_thread_adapter (309068, 0, 0, 0, 0, 0) + 20
fdb95854 _lwp_start (0, 0, 0, 0, 0, 0)
'시스템운영' 카테고리의 다른 글
vmstat, sar 명령 (0) | 2020.06.02 |
---|---|
(SUN/Solaris) CPU,Memory,Fault 조회 (0) | 2020.06.02 |
리눅스 ssh 접속 / 초기배너 설정하기 (0) | 2020.04.24 |
chmod,chown,chgrp (0) | 2020.04.23 |
top 명령 (0) | 2020.04.23 |
댓글