概述
今天主要對mpstat、iostat、sar、vmstat命令做一下總結,這幾個命令都是屬於運維人員必須掌握的,所以,能不偷懶就不偷懶了。
mpstat是Multiprocessor Statistics的縮寫,是實時監控工具,報告與cpu的一些統計資訊這些資訊都存在/proc/stat檔案中,在多CPU系統裡,其不但能檢視所有的CPU的平均狀況的資訊,而且能夠有檢視特定的cpu資訊,mpstat最大的特點是:可以檢視多核心的cpu中每個計算核心的統計資料;而且類似工具vmstat只能檢視系統的整體cpu情況。
例項:檢視多核cpu當前執行的狀況,每兩秒更新一次,一共更新5次
# mpstat 2 5
說明:
%user 在internal時間段裡,使用者態的CPU時間(%),不包含nice值為負程序 (usr/total)*100
%nice 在internal時間段裡,nice值為負程序的CPU時間(%) (nice/total)*100
%sys 在internal時間段裡,核心時間(%) (system/total)*100
%iowait 在internal時間段裡,硬碟IO等待時間(%) (iowait/total)*100
%irq 在internal時間段裡,硬中斷時間(%) (irq/total)*100
%soft 在internal時間段裡,軟中斷時間(%) (softirq/total)*100
%idle 在internal時間段裡,CPU除去等待磁碟IO操作外的因為任何原因而空閒的時間閒置時間(%) (idle/total)*100
iostat用於輸出CPU和磁碟I/O相關的統計資訊.
語法:
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
例項1:
--引數-d表示顯示裝置磁碟的使用狀態;-k表示某些使用block為單位的列強制使用kilobytes為單位,2表示資料每隔2秒重新整理一次 6表示一共重新整理6次
# iostat -d -k 2 6
tps:該裝置每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。
"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合併為"一次I/O請求"。"一次傳輸"請求的大小是未知的。
kB_read/s:每秒從裝置(drive expressed)讀取的資料量;
kB_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;
kB_read:讀取的總資料量;
kB_wrtn:寫入的總數量資料量;這些單位都為Kilobytes。
例項2:
--可以把K單位換成M
# iostat -d -m 2 6
例項3:
--使用iostat檢視cpu統計資訊使用-C引數
# iostat -c 2 6
例項4:-X引數
--iostat還有一個比較常用的-X引數,該選項將用於顯示和io相關的擴充套件資料。
# iostat -d -x -k 1 6
sar(System ActivityReporter系統活動情況報告)是目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、程序活動及IPC有關的活動等,sar命令有sysstat安裝包安裝。
sar [ options ] [ <interval> [ <count> ] ]
--Options are:
-A:所有報告的總和
-b:顯示I/O和傳遞速率的統計資訊
-B:顯示換頁狀態
-d:輸出每一塊磁碟的使用資訊
-e:設定顯示報告的結束時間
-f:從制定的檔案讀取報告
-i:設定狀態資訊重新整理的間隔時間
-P:報告每個CPU的狀態
-R:顯示記憶體狀態
–u:輸出cpu使用情況和統計資訊
–v:顯示索引節點、檔案和其他核心表的狀態
-w:顯示交換分割槽的狀態
-x:顯示給定程序的裝
-r:報告記憶體利用率的統計資訊
--每2秒取樣一次,連續4次,觀察cpu的使用情況,並將取樣的結果以二進位制形式存入當前目錄下的檔案sar中,如下:
# sar -u -o sar 2 4
--從二進位制中調取
# sar -u -f /root/sar
--報告每個cpu的狀態,1秒一次,一共4次
# sar -p 1 4
例項4:
--檢視平均負載
#sar -q
例項5:
--檢視記憶體使用情況
#sar -r
例項6:
--檢視系統swap分割槽的統計資訊
# sar -w
例項7:
--磁碟使用統計資訊
# sar -d
預設監控:
sar 5 5 // CPU和IOWAIT統計狀態
(1) sar -b 5 5 // IO傳送速率
(2) sar -B 5 5 // 頁交換速率
(3) sar -c 5 5 // 程序建立的速率
(4) sar -d 5 5 // 塊裝置的活躍資訊
(5) sar -n DEV 5 5 // 網路裝置的狀態資訊
(6) sar -n SOCK 5 5 // SOCK的使用情況
(7) sar -n ALL 5 5 // 所有的網路狀態資訊
(8) sar -P ALL 5 5 // 每顆CPU的使用狀態資訊和IOWAIT統計狀態
(9) sar -q 5 5 // 佇列的長度(等待執行的程序數)和負載的狀態
(10) sar -r 5 5 // 記憶體和swap空間使用情況
(11) sar -R 5 5 // 記憶體的統計資訊(記憶體頁的分配和釋放、系統每秒作為BUFFER使用記憶體頁、每秒被cache到的記憶體頁)
(12) sar -u 5 5 // CPU的使用情況和IOWAIT資訊(同預設監控)
(13) sar -v 5 5 // inode, file and other kernel tablesd的狀態資訊
(14) sar -w 5 5 // 每秒上下文交換的數目
(15) sar -W 5 5 // SWAP交換的統計資訊(監控狀態同iostat 的si so)
(16) sar -x 2906 5 5 // 顯示指定程序(2906)的統計資訊,資訊包括:程序造成的錯誤、使用者級和系統級使用者CPU的佔用情況、執行在哪顆CPU上
(17) sar -y 5 5 // TTY裝置的活動狀態
(18) 將輸出到檔案(-o)和讀取記錄資訊(-f)
vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況。這個命令是我檢視Linux/Unix最喜愛的命令,一個是Linux/Unix都支援,二是相比top,我可以看到整個機器的CPU,記憶體,IO的使用情況,而不是單單看到各個程序的CPU使用率和記憶體使用率(使用場景不一樣)。
--第一個引數是取樣的時間間隔數,單位是秒,第二個引數是取樣的次數
--如果想在一段時間內一直監控可執行# vmstat 2
# vmstat 2 6
r 表示執行佇列(就是說多少個程序真的分配到CPU),當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,一般負載超過了3就比較高,超過了5就高
,超過了10就不正常了,伺服器的狀態很危險。top的負載類似每秒的執行佇列。如果執行佇列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。
b 表示阻塞的程序
swpd 虛擬記憶體已使用的大小,如果大於0,表示你的機器物理記憶體不足了,如果不是程式記憶體洩露的原因,那麼你該升級記憶體了或者把耗記憶體的任務遷移到其他機器。
free 空閒的物理記憶體的大小
buff Linux/Unix系統是用來儲存,目錄裡面有什麼內容,許可權等的快取
cache cache直接用來記憶我們開啟的檔案,給檔案做緩衝
si 每秒從磁碟讀入虛擬記憶體的大小,如果這個值大於0,表示物理記憶體不夠用或者記憶體洩露了,要查詢耗記憶體程序解決掉。
so 每秒虛擬記憶體寫入磁碟的大小,如果這個值大於0,同上
bi 塊裝置每秒接收的塊數量,這裡的塊裝置是指系統上所有的磁碟和其他塊裝置,預設塊大小是1024byte
bo 塊裝置每秒傳送的塊數量,例如我們讀取檔案,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整。
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數
us 使用者CPU時間
sy 系統CPU時間,如果太高,表示系統呼叫時間長,例如是IO操作頻繁。
id 空閒 CPU時間
wt 等待IO CPU時間。
這種基礎命令一定要會,建議大家熟記,後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~
概述
今天主要對mpstat、iostat、sar、vmstat命令做一下總結,這幾個命令都是屬於運維人員必須掌握的,所以,能不偷懶就不偷懶了。
1、mpstatmpstat是Multiprocessor Statistics的縮寫,是實時監控工具,報告與cpu的一些統計資訊這些資訊都存在/proc/stat檔案中,在多CPU系統裡,其不但能檢視所有的CPU的平均狀況的資訊,而且能夠有檢視特定的cpu資訊,mpstat最大的特點是:可以檢視多核心的cpu中每個計算核心的統計資料;而且類似工具vmstat只能檢視系統的整體cpu情況。
例項:檢視多核cpu當前執行的狀況,每兩秒更新一次,一共更新5次
# mpstat 2 5
說明:
%user 在internal時間段裡,使用者態的CPU時間(%),不包含nice值為負程序 (usr/total)*100
%nice 在internal時間段裡,nice值為負程序的CPU時間(%) (nice/total)*100
%sys 在internal時間段裡,核心時間(%) (system/total)*100
%iowait 在internal時間段裡,硬碟IO等待時間(%) (iowait/total)*100
%irq 在internal時間段裡,硬中斷時間(%) (irq/total)*100
%soft 在internal時間段裡,軟中斷時間(%) (softirq/total)*100
%idle 在internal時間段裡,CPU除去等待磁碟IO操作外的因為任何原因而空閒的時間閒置時間(%) (idle/total)*100
2、iostatiostat用於輸出CPU和磁碟I/O相關的統計資訊.
語法:
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
例項1:
--引數-d表示顯示裝置磁碟的使用狀態;-k表示某些使用block為單位的列強制使用kilobytes為單位,2表示資料每隔2秒重新整理一次 6表示一共重新整理6次
# iostat -d -k 2 6
說明:
tps:該裝置每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。
"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合併為"一次I/O請求"。"一次傳輸"請求的大小是未知的。
kB_read/s:每秒從裝置(drive expressed)讀取的資料量;
kB_wrtn/s:每秒向裝置(drive expressed)寫入的資料量;
kB_read:讀取的總資料量;
kB_wrtn:寫入的總數量資料量;這些單位都為Kilobytes。
例項2:
--可以把K單位換成M
# iostat -d -m 2 6
例項3:
--使用iostat檢視cpu統計資訊使用-C引數
# iostat -c 2 6
例項4:-X引數
--iostat還有一個比較常用的-X引數,該選項將用於顯示和io相關的擴充套件資料。
# iostat -d -x -k 1 6
3、sarsar(System ActivityReporter系統活動情況報告)是目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、程序活動及IPC有關的活動等,sar命令有sysstat安裝包安裝。
語法:
sar [ options ] [ <interval> [ <count> ] ]
--Options are:
-A:所有報告的總和
-b:顯示I/O和傳遞速率的統計資訊
-B:顯示換頁狀態
-d:輸出每一塊磁碟的使用資訊
-e:設定顯示報告的結束時間
-f:從制定的檔案讀取報告
-i:設定狀態資訊重新整理的間隔時間
-P:報告每個CPU的狀態
-R:顯示記憶體狀態
–u:輸出cpu使用情況和統計資訊
–v:顯示索引節點、檔案和其他核心表的狀態
-w:顯示交換分割槽的狀態
-x:顯示給定程序的裝
-r:報告記憶體利用率的統計資訊
例項1:
--每2秒取樣一次,連續4次,觀察cpu的使用情況,並將取樣的結果以二進位制形式存入當前目錄下的檔案sar中,如下:
# sar -u -o sar 2 4
例項2:
--從二進位制中調取
# sar -u -f /root/sar
例項3:
--報告每個cpu的狀態,1秒一次,一共4次
# sar -p 1 4
例項4:
--檢視平均負載
#sar -q
例項5:
--檢視記憶體使用情況
#sar -r
例項6:
--檢視系統swap分割槽的統計資訊
# sar -w
例項7:
--磁碟使用統計資訊
# sar -d
預設監控:
sar 5 5 // CPU和IOWAIT統計狀態
(1) sar -b 5 5 // IO傳送速率
(2) sar -B 5 5 // 頁交換速率
(3) sar -c 5 5 // 程序建立的速率
(4) sar -d 5 5 // 塊裝置的活躍資訊
(5) sar -n DEV 5 5 // 網路裝置的狀態資訊
(6) sar -n SOCK 5 5 // SOCK的使用情況
(7) sar -n ALL 5 5 // 所有的網路狀態資訊
(8) sar -P ALL 5 5 // 每顆CPU的使用狀態資訊和IOWAIT統計狀態
(9) sar -q 5 5 // 佇列的長度(等待執行的程序數)和負載的狀態
(10) sar -r 5 5 // 記憶體和swap空間使用情況
(11) sar -R 5 5 // 記憶體的統計資訊(記憶體頁的分配和釋放、系統每秒作為BUFFER使用記憶體頁、每秒被cache到的記憶體頁)
(12) sar -u 5 5 // CPU的使用情況和IOWAIT資訊(同預設監控)
(13) sar -v 5 5 // inode, file and other kernel tablesd的狀態資訊
(14) sar -w 5 5 // 每秒上下文交換的數目
(15) sar -W 5 5 // SWAP交換的統計資訊(監控狀態同iostat 的si so)
(16) sar -x 2906 5 5 // 顯示指定程序(2906)的統計資訊,資訊包括:程序造成的錯誤、使用者級和系統級使用者CPU的佔用情況、執行在哪顆CPU上
(17) sar -y 5 5 // TTY裝置的活動狀態
(18) 將輸出到檔案(-o)和讀取記錄資訊(-f)
4、vmstatvmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況。這個命令是我檢視Linux/Unix最喜愛的命令,一個是Linux/Unix都支援,二是相比top,我可以看到整個機器的CPU,記憶體,IO的使用情況,而不是單單看到各個程序的CPU使用率和記憶體使用率(使用場景不一樣)。
例項1:
--第一個引數是取樣的時間間隔數,單位是秒,第二個引數是取樣的次數
--如果想在一段時間內一直監控可執行# vmstat 2
# vmstat 2 6
說明:
r 表示執行佇列(就是說多少個程序真的分配到CPU),當這個值超過了CPU數目,就會出現CPU瓶頸了。這個也和top的負載有關係,一般負載超過了3就比較高,超過了5就高
,超過了10就不正常了,伺服器的狀態很危險。top的負載類似每秒的執行佇列。如果執行佇列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。
b 表示阻塞的程序
swpd 虛擬記憶體已使用的大小,如果大於0,表示你的機器物理記憶體不足了,如果不是程式記憶體洩露的原因,那麼你該升級記憶體了或者把耗記憶體的任務遷移到其他機器。
free 空閒的物理記憶體的大小
buff Linux/Unix系統是用來儲存,目錄裡面有什麼內容,許可權等的快取
cache cache直接用來記憶我們開啟的檔案,給檔案做緩衝
si 每秒從磁碟讀入虛擬記憶體的大小,如果這個值大於0,表示物理記憶體不夠用或者記憶體洩露了,要查詢耗記憶體程序解決掉。
so 每秒虛擬記憶體寫入磁碟的大小,如果這個值大於0,同上
bi 塊裝置每秒接收的塊數量,這裡的塊裝置是指系統上所有的磁碟和其他塊裝置,預設塊大小是1024byte
bo 塊裝置每秒傳送的塊數量,例如我們讀取檔案,bo就要大於0。bi和bo一般都要接近0,不然就是IO過於頻繁,需要調整。
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數
us 使用者CPU時間
sy 系統CPU時間,如果太高,表示系統呼叫時間長,例如是IO操作頻繁。
id 空閒 CPU時間
wt 等待IO CPU時間。
這種基礎命令一定要會,建議大家熟記,後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~