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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux下排查进程占用cpu高的问题

發(fā)布時間:2024/4/18 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下排查进程占用cpu高的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

相信很多C++程序員都經(jīng)歷程序占用cpu過高的問題,這種問題,如果對代碼運行邏輯足夠熟悉,只靠腦子想估計定位起來也不難,但是如果是調(diào)用第三方sdk,或者團隊其他人開發(fā)的庫導(dǎo)致的cpu占用居高,就不那么容易定位了。

如何確定程序cpu占用情況?

這個非常簡單,一條命令搞定,top -p 進程pid,這樣就可以:

這樣就可以持續(xù)的觀察你的程序的cpu占用情況,如果一直居高不下,就可能是有問題了。??從圖中可以看到%CPU為98.0,這已經(jīng)非常非常高了。

如何查看線程級別的cpu占用情況?

方法一:

命令:

ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu | grep 進程號

這個比較長,理解一下也不難記憶,這里我們可以看到用戶、進程號、父進程號、線程號、cpu占用總時長、cpu占用率、程序名。按照cpu的值進行了升序排列,最后一個即為占用cpu最高的線程,這樣就可以找到對應(yīng)線程號。

圖中第4列就是線程號,第5列是cpu占用時長,第6列是cpu占用率,可以看到54313線程占用CPU最高。

方法二:

命令:

top -H -p 進程號-H :Threads-mode operation -p :Monitor-PIDs

這個就很好記了,推薦用這個!一目了然,動態(tài)顯示各個線程的cpu占用情況,很容易找出最高的那個。

??圖中%CPU列很清晰的列出了cpu的占用狀況,也可以看出54313線程占用cpu最高。

細心的同學發(fā)現(xiàn)了,為什么這兩種方法得到的數(shù)據(jù)不一樣?莫非不對?其實都是對的,只是計算用的數(shù)據(jù)不同,top得到的是瞬時的cpu占用率,top數(shù)據(jù)默認3秒刷新一次,所以計算的是這3秒內(nèi)線程占用CPU時長占比,而ps計算的是從啟動到現(xiàn)在的一個時長占比,運行時間越長,就會趨近于某個固定值,感興趣的同學可以了解一下cpu占用率的算法。

如何將問題定位到代碼行級別?

通過上面的操作我們已經(jīng)找到了那個搞事情的線程,但是線程長得都一個鬼樣子,我們只能看到一個代表它的數(shù)字,此時需要一個建立一個線程號與具體代碼的映射關(guān)聯(lián),那么就需要用到這幾個查看堆棧信息的強大工具了。

gstack/pstack(c/c++程序)

命令:

gstack/pstack 進程號

這兩個其實一個工具,pstack是gstack的軟連接而已。

總結(jié)

以上是生活随笔為你收集整理的Linux下排查进程占用cpu高的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。