前言
? ? ? ? 本文基于CPU核心性能指標(biāo)系統(tǒng)原理柜砾,講解使用排查工具查找常見性能問題姨伟,總結(jié)CPU調(diào)優(yōu)的一般套路勤讽。
性能指標(biāo)和工具對應(yīng)關(guān)系
系統(tǒng)IOWAIT占用CPU過高問題排查腹泌?
一粟关、top套菜,觀察系統(tǒng)整體CPU使用率亲善、平均負(fù)載、軟硬中斷等性能指標(biāo)逗柴,其中wa指標(biāo)有明顯變化蛹头。
二、再通過vmstat -S m -w 3 戏溺,進(jìn)一步觀察系統(tǒng)總體情況渣蜗,發(fā)現(xiàn)隨著進(jìn)程的負(fù)載到來,io中bi上升并穩(wěn)定旷祸,cpu的wa大量堆積耕拷,b列也有不可中斷進(jìn)程。system的in和cs穩(wěn)定托享∩眨可見文件系統(tǒng)IO的讀操作浸赫,導(dǎo)致了wa的堆積和b的處理不及時(shí)。而in和cs穩(wěn)定后不再增長赃绊,說明中斷情況和上下文切換都是由于文件系統(tǒng)IO讀操作引起的正常切換和中斷既峡。
三、進(jìn)一步通過凭戴,mpstat -u -A 1 監(jiān)測系統(tǒng)各CPU指標(biāo)項(xiàng)的占用情況涧狮。發(fā)現(xiàn)每個(gè)CPU的iowait均占用不少炕矮。再次確認(rèn)目前系統(tǒng)CPU消耗在IO等待的性能過大么夫。
四、最后通過 pidstat -wt -u 1 3 肤视,查看線程對CPU和上下文切換的占用情況档痪,可見CPU的iowait占用較多的進(jìn)程是flume-sdk進(jìn)程;而自愿上下文切換列表中出現(xiàn)了kblockd/3進(jìn)程邢滑,可見iowait引發(fā)了文件系統(tǒng)IO的自愿上下文切換腐螟。
總結(jié)
關(guān)于CPU性能問題主要圍繞著CPU主要的性能指標(biāo)展開,先使用top/mpstat/ps這種系統(tǒng)概要或進(jìn)程快照的分析工具困后,先觀察系統(tǒng)整體情況乐纸,確定哪個(gè)指標(biāo)有明顯問題;然后再使用vmstat進(jìn)一步觀察該指標(biāo)的消耗進(jìn)展摇予,然后通過pidstat確定哪個(gè)進(jìn)程導(dǎo)致的性能問題汽绢,最后使用進(jìn)程分析工具找出具體問題。比如:perf進(jìn)行熱點(diǎn)事件分析或strace進(jìn)行進(jìn)程系統(tǒng)調(diào)用鏈分析侧戴。