pid user pr ni virt res shr s
%cpu
%mem time
+command
14094
root 150
315m
10m7308
s 891
%2.21:
49.01
gateway
top
中可以看到有
107個執行緒,但是下面
9個執行緒占用
cpu很高,下面以執行緒
14086
為主,分析其為何
high cpu
pid user pr ni virt res shr s
%cpu mem time
+command
14086
root 250
922m
914m
538m
r 101
10.021:
35.46
gateway
14087
root 250
922m
914m
538m
r 101
10.010:
50.22
gateway
14081
root 250
922m
914m
538m
s
9910.08:
57.36
gateway
#gstack 14094 > gstack.log
在
gstack
.log
中查詢執行緒
id14086
,由於函式棧會暴露函式細節,因此只顯示了兩個函式楨,執行緒
id14086
對應執行緒號是
37
thread37(
thread
0x4696ab90
(lwp
14086
)):
#0 0x40000410 in __kernel_vsyscall ()
#1 0x40241f33 in poll () from /lib/i686/nosegneg/libc.so.6
#gcore 14094
該命令生成
core
檔案core
.14094
%
time seconds usecs
/call calls errors syscall
------
-----------
-----------
---------
---------
----------------------------
99.99
22.683879
3385
6702
poll
gcore
和實際的
core
dump
時產生的
core
檔案幾乎一樣,只是不能用
gdb進行某些動態除錯
(
gdb)
gdb gateway core
.14094
(
gdb)
thread
37
[
switching
to thread 37(
thread
0x4696ab90
(lwp
14086
))]#
00x40000410
in__kernel_vsyscall
()
(
gdb)
where
#0 0x40000410 in __kernel_vsyscall ()
#1 0x40241f33 in poll () from /lib/i686/nosegneg/libc.so.6
可以根據詳細的函式棧進行
gdb除錯,列印一些變數值,並結合源**分析為何會
poll
呼叫占用很高的
cpu。
因為**涉及到公司產權,顧不在此做詳細分析,需要明白的是分析的流程和使用的命令。
流程為:程序
id->執行緒
id->執行緒函式呼叫棧->函式耗時和呼叫統計->源**分析
Windows CPU佔用率過高
今天除錯程式,發現 windows7 的cpu 佔用率一直為 25 左右,如下圖所示。四核 25 換成單核那就是 100 的佔用率了!上圖進入 程序 頁面,單擊 cpu 列,將根據 cpu佔用率進行排序。結果發現程序 svchost.exe 的cpu 佔用率為 25 記憶體占用達到了2g!記住svc...
檢視CPU佔用率
檢視系統cpu佔用率 在跑一些程式,例如deep learning的時候,總是希望檢視一下cpu gpu 記憶體的使用率 1.cpu 記憶體 使用top命令 top 有乙個更直觀的監測工具,叫htopsu doap t ge tins tall htop s ud oapt get inst all...
分析CPU佔用率過高的問題
cpu佔用率過高的原因 1 中存在死迴圈 2 演算法過於複雜。對於演算法過於複雜而導致的cpu佔用率過高的問題,分析起來並不容易。下面提供一種方法,不管你對 的邏輯以及業務的需求是否了解,只要掌握了這種方法,都可以將問題定位出來。我們都知道,在linux unix下都有效能統計工具,通過top命令,...