CPU佔用分析

  1. 用TOP命令很容易定位到時誰佔用CPU最高
    多線程

  2. 多線程的進程,咱們要知道實際上佔用cpu的最小單位是線程,因此確定是衆線程中的某一個或幾個佔用CPU太高致使的。top -H -p pid命令查看進程內各個線程佔用的CPU百分比
    oop

  3. 如上圖所示咱們能夠看出id爲8863的線程cpu佔用率最高。好,咱們如今只要能找到他偷走的cpu就行了,雖然這小子嘴巴嚴,可是咱們有一套完善的審問流程,不怕他不招。首先出馬的是strace -T -r -c -p pid命令

    它的做用是查看系統調用和花費的時間,epoll_wait雖然佔用的調用時間多,可是他自己是個正常的阻塞調用。線程

  4. 咱們接着讓pstack pid出馬

    能夠看到每一個線程的調用堆棧,找到已經找出的佔用CPU最高的那個線程,而後看他的調用堆棧,很容易看出在哪一步邏輯上致使了busy loop,
    再使用trace -p tid看看線程的調用過程接着定位到代碼,修復bug,找回被偷走的cpu。blog

相關文章
相關標籤/搜索