본문 바로가기
시스템운영

프로세스 상태조회 - CPU 점유율 조회

by 보이드메인 2020. 6. 2.

특정 프로세스의 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

댓글