程序占用cpu過高,一般有以下兩種原因:
1、 業務量過大導致程序處理負荷高,占用cpu資源;
2、 程式bug導致,比如死迴圈;
初步檢視cpu占用情況
top進一步分析
對於程式陷入死迴圈導致cpu占用過高類問題,最好的辦法是把程序當前的堆疊資訊列印出來,根據堆疊找到**,快速定位出問題。
step1:檢視執行緒占用cpu的情況
ps -mp 2651 -o thread,tid,time | sort -rn
step2:檢視cpu占用高的執行緒堆疊
找出cpu消耗最多的執行緒id,並將執行緒id轉換為16進製制,最後使用jstack工具列印執行緒堆疊資訊
printf "%x\n" 3850
jstack 2651 | grep f0a -a 30
CPU架構過程簡介
稍微寫一下cpu的發展過程,目的是為幫助理解現在的amd64架構,看懂linux或其它系統軟體的啟動彙編 一 8086 8088 16位暫存器 ax,bx,cx,dx,cs,ds,es,ss,bp,sp,ip flags,si,di 8位暫存器 ah,al,bh,bl,ch,cl,dh,cl 資料匯...
CPU監控分析
名稱 初始安裝 說明uptime 顯示系統執行時間和cpu負載情況 top 可以實時動態地檢視系統的整體運 況 htop top高階版 mpstat 多核cpu效能分析工具,實時檢視每個cpu的效能指標,以及所有cpu的平均指標 vmstat 檢視系統的整體使用情況 iostat 檢視cpu和磁碟i...
CPU指令分析 1
if階段的操作有取指令,並決定下一條pc暫存器的內容。if階段由流水線暫存器與匯流排介面組成。首先pc 指令暫存器以及流水線資料有效標誌都設定為初始值以及對應的無效值 if pc 0 if insn nop 32 d0 if en disable 流水線暫存器的重新整理要在延遲訊號stall無效的時...