一文掌握 Linux 效能分析之 CPU 篇
PS:歡迎大家關注我的公眾號:CloudDeveloper(ID: cloud_dev),專注技術分享,努力打造乾貨分享平臺,二維碼在文末可以掃。
平常工作會涉及到一些 Linux 效能分析的問題,因此決定總結一下常用的一些效能分析手段,僅供參考。
說到效能分析,基本上就是 CPU、記憶體、磁碟 IO 以及網路這幾個部分,本文先來看 CPU 這個部分。
CPU 基礎資訊
進行效能分析之前,首先得知道 CPU 有哪些資訊,可以通過以下方法檢視 CPU 配置資訊。
lscpu
在 Linux 下,類似 lsxxx 這樣的命令都是用來檢視基本資訊的,如 ls 檢視當前目錄檔案資訊,lscpu 就用來檢視 CPU 資訊,類似還有 lspci 檢視 PCI 資訊。

image
可以看到我的機器配置很低,1 核 2.5GHz(在阿里雲買的最低配的伺服器)。
/proc/cpuinfo
/proc 目錄是核心透傳出來給使用者態使用的,裡面記錄著很多資訊檔案,比如還有記憶體檔案 meminfo 等。可以使用 cat /proc/cpuinfo 檢視 CPU 資訊。

image
這裡顯示的資訊可以具體到每個邏輯核上,由於我只有一個核,所以只顯示一組資訊。
dmidecode
這個命令是用來獲取 DMI(Desktop Management Interface)硬體資訊的,包括 BIOS、系統、主機板、處理器、記憶體、快取等等。對於 CPU 資訊,可以使用 dmidecode -t processor 來檢視。

image
CPU 使用情況分析
知道了 CPU 的基本資訊,我們就可以使用另外的命令來對 CPU 的使用情況分析一通了。
top
相信大家對下面這玩意不陌生,Windows 的工作管理員,top 的作用和它是一樣的。

image
top 顯示的效果雖說不像它這麼華麗,但已然讓人驚呼他倆怎麼長得這麼像。

image
我們重點關注這麼幾個欄位:
-
load average:三個數字分別表示最近 1 分鐘,5 分鐘和 15 分鐘的負責,數值越大負載越重。一般要求不超過核數,比如對於單核情況要 < 1。如果機器長期處於高於核數的情況,說明機器 CPU 消耗嚴重了。
-
%Cpu(s):表示當前 CPU 的使用情況,如果要檢視所有核(邏輯核)的使用情況,可以按下數字 “1” 檢視。這裡有幾個引數,表示如下:
- us使用者空間佔用 CPU 時間比例 - sy系統佔用 CPU 時間比例 - ni使用者空間改變過優先順序的程序佔用 CPU 時間比例 - idCPU 空閒時間比 - waIO等待時間比(IO等待高時,可能是磁碟效能有問題了) - hi硬體中斷 - si軟體中斷 - ststeal time
每個程序的使用情況:這裡可以羅列每個程序的使用情況,包括記憶體和 CPU 的,如果要看某個具體的程序,可以使用 top -p pid 檢視。
和 top 一樣的還有一個改進版的工具:htop,功能和 top 一樣的,只不過比 top 表現更炫酷,使用更方便,可以看下它的效果。

image
ps
可能很多人會忽略這個命令,覺得這不是檢視程序狀態資訊的嗎,其實非也,這個命令配合它的引數能顯示很多功能。比如 ps aux。如果配合 watch,可以達到跟 top 一樣的效果,如:watch -n 1 "ps aux"(-n 1 表示每隔 1s 更新一次)

image
vmstat
這個命令基本能看出當前機器的執行狀態和問題,非常強大。可以使用 vmstat n 後面跟一個數字,表示每隔 ns 顯示系統的狀態,資訊包括 CPU、記憶體和 IO 等。
更多更詳細的內容大家可以關注我的公眾號檢視,那裡的閱讀體驗還更好一些。
PS:更多幹貨可以關注我的微信公眾號:CloudDeveloper(ID: cloud_dev),堅持分享乾貨。

image