1、性能分析因素:CPU、內存、網絡、磁盤讀寫
2、系統對應的應用類型主要分為以下兩種:
IO Bound:一般都是高負荷的內存使用以及存儲系統,IO范疇的應用就是一個大數據處理的過程;通常數據庫軟件被認為是IO范疇的應用類型
CPU Bound:一個批處理CPU請求以及數學計算的過程,通常web server,mail server,以及其他類型服務被認為是CPU范疇的應用類型
系統的分析思路主要有兩種:自頂而下,由應用程序往下分析;由底往上,從操作系統資源分析到應用程序。
3、查看CPU統計分析命令:vmstat、ps、top等
查看內存統計分析命令:vmstat、free、top等
查看網絡統計分析命令:netstat -s、ifconfig RX/TX、ip -s link等
查看IO統計分析命令:iostat、dmesg(查看io錯誤)
查看負載統計分析命令:w、top、uptime
4、簡介top命令:
首行命令與w、uptime意義相同,分別為系統當前時間,系統運行時間、多少個用戶,過去一分鍾、五分鍾、十五分鍾的負載情況。
第二行為進程信息,D:不可中斷睡眠態(通常出現在IO阻塞)、R:運行態、S:睡眠態、T:已停止、z:僵屍態
第三行 us:用戶空間占用CPU百分比、sy:內核空間占用CPU百分比、ni:用戶進程空間內改變過優先級的進程占用CPU百分比、id:空閑CPU百分比、wa:等待輸入輸出的CPU時間百分比、hi:硬中斷占用CPU百分比、si:軟中斷占用CPU百分比、st:虛擬CPU等待實際CPU的時間的百分比。
硬中斷:由與系統相連的外設(比如網卡、硬盤)自動產生的。主要是用來通知操作系統系統外設狀態的變化。比如當網卡收到數據包的時候,就會發出一個中斷。我們通常所說的中斷指的是硬中斷(hardirq)。
軟中斷:為了滿足實時系統的要求,中斷處理應該是越快越好。linux為了實現這個特點,當中斷發生的時候,硬中斷處理那些短時間就可以完成的工作,而將那些處理事件比較長的工作,放到中斷之后來完成,也就是軟中斷(softirq)來完成。
硬中斷和軟中斷的區別
(1)軟中斷是執行中斷指令產生的,而硬中斷是由外設引發的。
(2)硬中斷的中斷號是由中斷控制器提供的,軟中斷的中斷號由指令直接指出,無需使用中斷控制器。
(3)硬中斷是可屏蔽的,軟中斷不可屏蔽。
(4)硬中斷處理程序要確保它能快速地完成任務,這樣程序執行時才不會等待較長時間,稱為上半部。
(5)軟中斷處理硬中斷未完成的工作,是一種推后執行的機制,屬於下半部。
分析:top命令下按下1可以查看各CPU的使用情況,當wa使用率過高,我們應該考慮IO的性能瓶頸;當hi使用率過高,表示當前硬件中斷占用很大百分比,可以/proc/interrupts、/proc/irq/pid/smp_affinity、服務irqbalance是否配置;si是通過軟件的方法模擬硬件的中斷模式,常見的軟件中斷一般和網絡有關,從網卡到IP層的數據報文收發斗是si處理的,長時間寫日志也可能產生軟件中斷,我們可以通過ps aux|grep ksoftirqd查看ksoftirqd的瓶頸。
第四行Mem usd:使用內存總量、Mem free:空閑內存總量、Mem buffers:用作內核緩存量、Mem cached:緩沖交換區總量;cache和buffer的作用是縮短IO調用的時間,其中cache的命中率很關鍵,如果頻繁訪問的文件不能命中,對cache而言是一個比較大的浪費,此時應該考慮drop cache[#sync(避免丟失數據),#echo 3 > /proc/sys/vm/drop_caches]並且提升cache的命中率
第五行Swap total:交換區總量、Swap used:使用交換區總量、Swap free:空閑交換區總量,avail Mem:剩余內存使用量
第六行pid:進程號、user:進程所有者用戶名、pr:優先級、ni:nice值(負值表示高優先級)、virt:進程使用的虛擬內存總量=swap+res、res:進程使用的、未被換出的物理內存大小、shr:共享內存大小、%Cpu:cpu百分比、%Mem:內存使用百分比、time+:進程使用cpu時間、command:命令行
5、top使用小技巧
(1)按d進入間隔刷新配置,輸入間隔秒數
(2)按f進入列配置界面,按d進行添加
(3)按1查看各cpu使用情況