日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 跟踪进程对CPU的占用情况,对内存的占用情况

發布時間:2025/1/21 linux 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 跟踪进程对CPU的占用情况,对内存的占用情况 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

本文使用java進程來舉例

1. 查看java進程及其線程對cpu的占用情況

首先使用ps -ef找到java進程id

# ps -ef|grep java

然后通過top -p pid命令查看該進程占用的cpu情況,例如:

# top -p 29008
top - 17:17:29 up 6 days, 23:41,? 5 users,? load average: 0.99, 0.80, 0.66
Tasks:?? 1 total,?? 0 running,?? 1 sleeping,?? 0 stopped,?? 0 zombie
Cpu(s): 25.5%us,? 0.0%sy,? 0.0%ni, 74.5%id,? 0.0%wa,? 0.0%hi,? 0.0%si,? 0.0%st
Mem:?? 7857876k total,? 3429332k used,? 4428544k free,?? 229888k buffers
Swap:? 9895928k total,??????? 0k used,? 9895928k free,? 1512232k cached

? PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND???????????????????????????????????????????? ?
29008 root????? 20?? 0 2427m 773m 9.9m S 102.0 10.1?? 5:56.72 java???

此時,若想查看線程占用cpu的情況,手動輸入shift+h (Show threads On)進行顯示線程的切換。

我們可以直接使用一個參數就默認打開線程占用CPU的跟蹤,使用-H參數,例如:

[root@supervision1 ~]# top -p 29008 -H
top - 17:13:40 up 6 days, 23:37,? 5 users,? load average: 0.79, 0.58, 0.57
Tasks:? 78 total,?? 1 running,? 77 sleeping,?? 0 stopped,?? 0 zombie
Cpu(s): 25.6%us,? 0.0%sy,? 0.0%ni, 74.4%id,? 0.0%wa,? 0.0%hi,? 0.0%si,? 0.0%st
Mem:?? 7857876k total,? 3421196k used,? 4436680k free,?? 229888k buffers
Swap:? 9895928k total,??????? 0k used,? 9895928k free,? 1512200k cached

? PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND???????????????????????????????????????????? ?
29014 root????? 25?? 0 2430m 771m? 13m R 99.6 10.1?? 1:27.41 java??????????????????????????????????????????????? ?
29013 root????? 16?? 0 2430m 771m? 13m S? 1.0 10.1?? 0:00.73 java??????????????????????????????????????????????? ?
29010 root????? 16?? 0 2430m 771m? 13m S? 0.7 10.1?? 0:00.73 java??????????????????????????????????????????????? ?
29011 root????? 16?? 0 2430m 771m? 13m S? 0.7 10.1?? 0:00.71 java??????????????????????????????????????????????? ?
29012 root????? 16?? 0 2430m 771m? 13m S? 0.7 10.1?? 0:00.70 java????????

說明:重點查看%CPU一項,查看哪個線程占用的cpu最多,然后找到對應的pid。

top命令的TIME/TIME+是指的進程所使用的CPU時間,不是進程啟動到現在的時間,因此,如果一個進程使用的cpu很少,那即使這個進程已經存在N長時間,TIME/TIME+也是很小的數值。

跟蹤這個線程所有系統調用

# strace -p 29014

Process 29014 attached - interrupt to quit
mprotect(0x2aaaaad03000, 4096, PROT_READ) = 0
futex(0x46555274, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x46555270, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x4821a4b4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x4821a4b0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x2aaab421d528, FUTEX_WAKE_PRIVATE, 1) = 1
clock_gettime(CLOCK_REALTIME, {1432286153, 770906000}) = 0

2. 查看java進程占用內存情況

# cat /proc/23386/status
Name:?? java
State:? S (sleeping)
Tgid:?? 23386
Pid:??? 23386
PPid:?? 1
TracerPid:????? 0
Uid:??? 0?????? 0?????? 0?????? 0
Gid:??? 0?????? 0?????? 0?????? 0
Utrace: 0
FDSize: 256
Groups: 0
VmPeak: 13003444 kB
VmSize: 13003444 kB
VmLck:???????? 0 kB
VmHWM:??? 311496 kB
VmRSS:??? 307048 kB
VmData: 12846208 kB
VmStk:??????? 88 kB
VmExe:??????? 32 kB
VmLib:???? 14256 kB
VmPTE:????? 1704 kB
VmSwap:??????? 0 kB
Threads:??????? 194

說明:

VmRSS:? 307048 kB??? 表示的就是占用的物理內存。

Threads: 194????表示目前一共打開194個線程。


轉載于:https://my.oschina.net/lionel45/blog/414767

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Linux 跟踪进程对CPU的占用情况,对内存的占用情况的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。