在Solaris中如何查看进程、线程的资源占用情况、进程中各个线程的堆栈信息

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值