如何定位死循環或高CPU使用率(linux)

如何定位死循環或高CPU使用率(linux)

?確定是CPU過高

使用top觀察是否存在CPU使用率過高現象

找出線程

對CPU使用率過高的進程的所有線程進行排序

ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep xxx
得到如下結果,其中線程2909使用了7.8%的CPU. 
2907 2913 0.0 ./xxx 
2907 2909 7.8 ./xxx
也可以通過查看/proc中的信息來確定高CPU線程. 打印了4列,線程ID,線程名,用戶時間和內核時間(排名未分先后) 
awk '{print $1,$2,$14,$15}' /proc/2907/task/*/stat

找出調用棧

使用gdb attach nmsagent所在的進程,在gdb中使用 info threads顯示所有線程

gdb
gdb>attach 2907
gdb>info threads

得到如下結果,可以發現2909線程的編號是12

  13 Thread 0xad5f2b70 (LWP 2908)  0x004ef0d7 in mq_timedreceive () from /lib/tls/i686/cmov/librt.so.112 Thread 0xad58eb70 (LWP 2909)  0x006e0422 in __kernel_vsyscall ()11 Thread 0xad52ab70 (LWP 2910)  0x006e0422 in __kernel_vsyscall ()10 Thread 0xad4f8b70 (LWP 2911)  0x006e0422 in __kernel_vsyscall ()9 Thread 0xad4c6b70 (LWP 2912)  0x006e0422 in __kernel_vsyscall ()8 Thread 0xad3feb70 (LWP 2913)  0x004ef0d7 in mq_timedreceive () from /lib/tls/i686/cmov/librt.so.17 Thread 0xace08b70 (LWP 2914)  0x004ef0d7 in mq_timedreceive () from /lib/tls/i686/cmov/librt.so.16 Thread 0xac607b70 (LWP 2915)  0x006e0422 in __kernel_vsyscall ()5 Thread 0xac5e6b70 (LWP 2916)  0x006e0422 in __kernel_vsyscall ()4 Thread 0xac361b70 (LWP 2917)  0x006e0422 in __kernel_vsyscall ()3 Thread 0xac2fdb70 (LWP 2918)  0x006e0422 in __kernel_vsyscall ()2 Thread 0xac1fcb70 (LWP 2919)  0x004ef0d7 in mq_timedreceive () from /lib/tls/i686/cmov/librt.so.1
* 1 Thread 0xb78496d0 (LWP 2907)  0x006e0422 in __kernel_vsyscall ()

使用thread 切換線程,使用bt顯示線程棧

gdb>thread 12
gdb>bt

得到如下線程棧

#0  0x006e0422 in __kernel_vsyscall ()
#1  0x001cca26 in nanosleep () from /lib/tls/i686/cmov/libc.so.6
#2  0x001fc2dc in usleep () from /lib/tls/i686/cmov/libc.so.6
#3  0x0806b510 in OspTaskDelay ()
#4  0x0805c710 in CDispatchTask::NodeMsgSendToSock() ()
#5  0x0805cc74 in DispatchTaskEntry ()
#6  0x0806a8e9 in OspTaskTemplateFunc(void*) ()
#7  0x00d4780e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0#8  0x002027ee in clone () from /lib/tls/i686/cmov/libc.so.6

?ps + strace

得到進程ID 21465

ps -e |grep cmu4996??        00:00:25 cmu_fjga_sp3
21465 pts/5    00:08:10 cmu

得到線程時間, 其中最占CPU的是 EpollRecvTask 21581

ps -eL |grep 21465 
21465 21579 pts/5 00:00:00 CamApp 
21465 21580 pts/5 00:00:00 TimerMan Task 
21465 21581 pts/5 00:09:02 EpollRecvTask 
21465 21582 pts/5 00:00:00 

使用 strace -p 21581 得到線程棧

轉載于:https://www.cnblogs.com/sonic4x/archive/2011/06/17/How_to_deal_with_dead-loop_or_high-cpu_usage_bug.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275440.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275440.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275440.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js 用迭代器模式優雅的處理遞歸問題

2019獨角獸企業重金招聘Python工程師標準>>> 什么是迭代器 循環數組或對象內每一項值,在 js 里原生已經提供了一個迭代器。 var arr [1, 2, 3] arr.forEach(function (item) {console.log(item) })實現一個迭代器 var iterator function (arr, cb) {fo…

如何抓取html請求,請求獲取網頁的response,獲取網頁的html 怎么那么慢

HttpEntity multipart builder.build();httppost.setEntity(multipart);long start System.currentTimeMillis();// 發送請求response httpclient.execute(httppost);long end System.currentTimeMillis();System.out.println("查詢upsfreight消耗的時間是(毫秒):&quo…

Serverless 究竟是什么?

大家好,我是若川。說起 Serverless,我想你應該并不陌生,作為一種云開發的架構模式,在近兩年里,伴隨著云原生概念的推廣愈發火爆。作為一名 Serverless 的擁躉,在跟大家推薦的過程中,我經常能看到…

instagram.apk_評論:Instagram Reels vs.TikTok

instagram.apkWith all the attention to the newly debuted Instagram Reels from Facebook and the hilarious, bizarre world of TikTok, here’s a first impression on the two platforms and how they compare from a designer’s perspective.所有人都在關注Facebook新近…

240多個jQuery常用到的插件

概述 jQuery 是繼 prototype 之后又一個優秀的 Javascript 框架。其宗旨是—寫更少的代碼,做更多的事情。它是輕量級的 js 庫(壓縮后只有21k) ,這是其它的 js 庫所不及的,它兼容 CSS3,還兼容各種瀏覽器(IE 6.0, FF 1.5, Safari 2.…

華為首款鴻蒙設備正式入網,華為首款鴻蒙設備正式入網:麒麟9000+挖孔全面屏,價格感人!...

作為國內電子產品領域的巨頭之一,華為這兩年的快速發展是大眾有目共睹的,除了手機業務外,華為的平板業務同樣有亮眼表現,無獨有偶,在近期各方媒體的不斷披露之下,又有一款華為平板被基本確認,這…

早上讀英語

#早上讀英語# Keep your eyes on the stars and your feet on the ground. 轉載于:https://www.cnblogs.com/da3j/p/10646531.html

myeclipse深色模式_完善深色模式的調色板

myeclipse深色模式Apps largely have a limited color palette which may already map well to dark mode. However, some colors produce optical vibrations when viewed on a dark background, straining the user’s eyes. So, certain apps need to map to a slightly des…

微軟悄悄發布了 Web 版的 VsCode

大家好,我是若川,最近組織了源碼共讀活動《1個月,200人,一起讀了4周源碼》,感興趣的可以加我微信 ruochuan12 參與,長期交流學習。在8月31日,微軟發了一個介紹他們新發布的功能的帖子介紹&#…

html中樣式表的三種形式,CSS樣式表有幾種存在方式

外部樣式:將網頁鏈接到外部樣式表。內頁樣式:在網頁上創建嵌入的樣式表。行內標簽樣式:應用內嵌樣式到各個網頁元素標簽內。每一種方法均有其優缺點:當要在站點上所有或部份的網頁上一致地應用相同樣式時,可使用外部樣…

figma設計_設計原型的最簡單方法:Figma速成課程

figma設計It doesn’t matter if you haven’t used any prototyping tools before or you’re transitioning from other ones (like Sketch, Adobe XD); This guide is for beginners and professionals alike. So for a university assignment, I had to prepare a presenta…

《大話數據結構》讀后總結(九)

線性表 順序存儲結構的插入與刪除 獲得元素操作 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */ /* 初始條件:順序線性表L已存在,1≤…

關于router name 的url重寫 --frontname rewrite frontname重寫!

對于tag 也就是在url中有tag的url&#xff0c;希望改成wholesale等其他方式&#xff0c; 1 參看blog插件方式&#xff1a; 在etc/config.xml中添加事件&#xff1a; <events> <sitemap_add_xml_block_to_the_end> <observers> …

初中級工程師如何快速成長和尋求突破

大家好&#xff0c;我是若川&#xff0c;最近組織了源碼共讀活動《1個月&#xff0c;200人&#xff0c;一起讀了4周源碼》&#xff0c;已經有超50人提交了筆記&#xff0c;群里已經有超1200人&#xff0c;感興趣的可以加我微信 ruochuan12 參與。前言寫這篇文章的初衷是因為看到…

ajax使用html()后樣式無效,jquery.ajax使用字符串拼接后內聯css樣式失效

問題所在:是這樣的,我使用ajax調用了一串json數據,使用字符串拼接的方法動態插入div容器.結果css并沒有對動態插入的內容加css樣式.代碼描述:css使用的內聯,在head部分, jquery使用外聯,在body后.我嘗試過:$(function(){}) //入口函數加載window.onload function(){} //原生do…

ios 按鈕圖片充滿按鈕_iOS有一些非常危險的按鈕-UX評論

ios 按鈕圖片充滿按鈕I recently bought a cool thing off Amazon. It’s an adapter for iPhone, making it easy to transfer photos from your big bulky camera to your phone. The adapter itself is very easy to use: simply insert your SD card and plug the adapter …

URLScan工具配置方法第1/2頁

本文分步說明如何配置 URLScan 工具以防止 Web 服務器受到攻擊和利用。 如何配置 URLScan 工具察看本文應用于的產品文章編號 : 326444最后修改 : 2007年3月14日修訂 : 5.3我們強烈建議所有運行 Microsoft Windows Server 2003 的用戶將 Microsoft Internet 信息服務 (IIS) 升級…

poj 1809

///一個點的坐標只有四種可能&#xff0c;用0表示 偶數&#xff0c;1表示奇數 &#xff0c;則四種可能為&#xff08;0,0&#xff09;&#xff0c;&#xff08;0,1&#xff09; ///&#xff08;1,0&#xff09;&#xff0c;&#xff08;1,1&#xff09;。觀察公式A|x1y2 - y1…

swiftui_SwiftUI的混合包

swiftui介紹 (Introduction) SwiftUI introduced us to a whole new way of designing and coding interfaces. Gone are the old ways of subclassing UIKit (or AppKit) classes and hardwiring layout constraints. Instead, we now have a nice, declarative way of struct…

三年經驗前端社招——有贊

大家好&#xff0c;我是若川&#xff0c;祝大家中秋節快樂。最近組織了源碼共讀活動《1個月&#xff0c;200人&#xff0c;一起讀了4周源碼》&#xff0c;已經有超50人提交了筆記&#xff0c;群里已經有超1200人&#xff0c;感興趣的可以點此鏈接掃碼加我微信 ruochuan12 參與。…