1、首先,需要找到该进程的进程ID(以DSLMgrDm为例)
$ ps -ef | grep DSLMgr
root 416 375 0 Jun 19 ? 4:08 /opt/n2000/server/conf/../bin/DSL
MgrDm
n2kuser 1846 1823 0 16:53:00 pts/3 0:00 grep DSLMgr
2、之后便可以查询该进程的资源占用情况了
$ prstat -p 416
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
416 root 67M 26M sleep 59 0 0:00.19 0.0% DSLMgrDm/33
3、还可以查询该进程的各个线程的资源占用情况
$ prstat -Lp 416
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
416 root 67M 26M sleep 59 0 0:00.08 0.0% DSLMgrDm/24
416 root 67M 26M sleep 59 0 0:00.01 0.0% DSLMgrDm/23
416 root 67M 26M sleep 59 0 0:00.00 0.0% DSLMgrDm/21
416 root 67M 26M sleep 59 0 0:00.00 0.0% DSLMgrDm/20
... ...
1、首先,要取得该进程的core文件(如果该进程的进程ID是416)
# gcore -o DSLMgrCore_06221701 416
gcore: DSLMgrCore_06221701.416 dumped
2、然后将此core文件转换一下即可
# pstack DSLMgrCore_06221701.416 | c++filt
(由于信息太多,下面只列出了线程1和线程2的堆栈信息,该命令与前面介绍的prstat命令相结合即可查看CPU占用率最高的线程的工作情况)
----------------- lwp# 1 / thread# 26 --------------------
fd19f428 lwp_sema_wait (fa40fe60)
fe0c96dc _park (fa40fe60, fe0ec000, 0, fa40fd98, 2234c, 0) + 114
fe0c90d8 _swtch (fa40fd98, fa40fd98, fe0ec000, 5, 1000, fe0cc910) + 158
fe0cc97c _sema_wait (1413658, fe0f785c, 10000, 1, 1413678, 1413660) + b0
fe0ccbb0 _libthread_sema_wait (1413658, 0, 14f6fd0, fe4f6000, 110e8, fe0ccb70)
+ 40
fe4e4e7c sem_wait (1413658, 0, fa40f660, 0, 216d4, fda62e64) + 20
fda6474c int ACE_OS::sema_wait(ACE_sema_t*) (1413440, 0, fa40f87c, 0, 0, 0) + 3
4
fda5edc0 int iMapTaskMgr::WaitThreadEnterCond(ACE_Time_Value&) (14133e8, fa40f8
7c, 0, 1, 0, 0) + 120
fda5e8d0 iMapTask*iMapTaskMgr::AcquireIdleTask() (14133e8, 14f6fd0, 0, 1, 1, 0)
+ 78
fda5e48c int iMapTaskMgr::svc() (14133e8, 14133e8, 1a, 0, 0, 14f6fd0) + dc
fd90bc30 void*ACE_Task_Base::svc_run(void*) (14133e8, 1, 0, 0, 1a, 14133e8) + b
0
fd831cbc void*ACE_Thread_Adapter::invoke_i() (14143d8, 1198068, 14143d8, fd90bb
80, 14133e8, 0) + bc
fd831bac void*ACE_Thread_Adapter::invoke() (14143d8, 0, 1198068, 14143d8, 0, 11
efc20) + e4
fd7c094c ace_thread_adapter (14143d8, fe0f2708, 0, 5, 1, 14143d8) + 3c
fe0db01c _thread_start (14143d8, 0, 0, 0, 0, 0) + 40
----------------- lwp# 2 / thread# 2 --------------------
fd19ed78 signotifywait ()
fe0ce950 _dynamiclwps (fe0ec000, ffbef618, 2, ffbef644, 0, 7efefeff) + 1c
fd19a220 thr_errnop (0, 0, 0, 0, 0, 0) + 20