關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux 、 Python 、 網路通訊、網路安全 等學習資料!
前言
大家好,這裏是 浩道Linux ,主要給大家分享 L inux 、 P ython 、 網路通訊、網路安全等 相關的IT知識平台。
今天浩道跟大家分享一個功能強大的Linux命令---sar,這個命令對於分析Linux系統效能時,作用十分強大。 本文將透過介紹sar命令詳細的參數選項,以及列舉出它常用的效能分析命令,讓大家真正做到拿來即用,看完就沒有你不會用的!全文針對該命令詳解羅列詳細,大家可以收藏起來,用到時翻一翻,不會迷路。
一、sar命令介紹
sar命令(System Activity Reporter系統活動情況報告) 是目前Linux比較全的系統效能分析工具之一, 是Linux下的一個系統執行狀態統計工具,主要用於收集、報告和保存系統活動資訊。sar命令透過讀取和報告系統活動計數器,幫助使用者了解系統的效能狀況。
sar命令可以從檔的讀寫情況、系統呼叫的使用情況、磁盤I/O、CPU效率、記憶體使用狀態、行程活動等 多方面對系統的活動進行報告。 同時 sar 還可以配置配置資訊收集歷史指標。
sar命令相關特點如下:
1、全面監控: sar命令可以從多方面對系統的活動進行報告,包括檔的讀寫情況、系統呼叫的使用情況、磁盤I/O、CPU效率、記憶體使用狀況、行程活動及IPC有關的活動等。
2、連續取樣: sar命令可以連續對系統取樣,獲得大量的取樣數據,從而更準確地反映系統的執行狀態。
3、數據保存: 除了將取樣數據和分析結果直接顯示在螢幕上,sar命令還可以將所選數據保存在指定的檔中,方便使用者後續檢視和分析。
4、低資源消耗: sar命令在執行時消耗的系統資源很小,不會對系統的正常執行造成太大影響。
二、sar命令安裝
centos7系統下,sar預設沒有安裝,我們可以透過yum方式進行安裝。
1、yum方式安裝
由於sar是sysstat軟體包中的一部份,故只需要安裝sysstat即可。
yum install -y sysstat
待sysstat安裝成功後,會在/etc/sysconfig路徑下生成/etc/sysconfig/sysstat檔。
/etc/sysconfig/sysstat檔 預設的配置資訊如下:
[root@haodaolinux02 ~]# cat /etc/sysconfig/sysstat
# sysstat-10.1.5 configuration file.
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=28
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31
# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"
# Compression program to use.
ZIP="bzip2"
[root@haodaolinux02 ~]#
透過配置檔資訊,可以看到預設值有收集數據保存時長,什麽時候開始壓縮,壓縮方式以及保存方式等資訊。這些資訊可以根據系統效能監控指標的需求自訂進行修改。
其中 HISTORY=28 表示將效能日誌檔保留多長時間,預設值是28天;
COMPRESSAFTER=31 表示確定sar檔在多少天後壓縮檔,預設值為31天;
SADC_OPTIONS="-S DISK" 表示系統活動數據收集保存參數;
ZIP="bzip2" 表示數據檔壓縮方式預設是bzip2;
三、sar命令用法及常見參數
(一)sar命令用法
透過幫助命令可以看到sar命令相關參數選項,如下所示:
[root@haodaolinux02 ~]# sar --help
用法: sar [ 選項 ] [ <時間間隔> [ <次數> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
[root@haodaolinux02 ~]#
其命令用法具體如下所示:
sar[options][-A][-o file][[t][n]]
1、其中各個選項參數如下所示:
options: 表示選項參數;
-A: 表示顯示所有的報告資訊,包括CPU、記憶體、磁盤I/O等各方面的統計數據;
-o file: 表示是檔路徑及檔名,將命令結果以二進制格式存放在指定檔中;
t: 表示時間間隔;
n: 表示是次數;
2、常見的options選項參數有:
-b: 表示I/O傳輸速率資訊狀態,包括緩沖區的讀寫操作、傳輸速度等;
-B: 表示顯示換頁狀態,即記憶體頁面的交換活動情況;
-c: 表示行程建立活動,包括建立和銷毀的行程數量;
-d: 表示顯示每個塊裝置的狀態,包括磁盤的讀寫速度、傳輸量等;
-e: 表示設定顯示報告的結束時間,可以與開始時間結合使用,以檢視特定時間範圍內的系統活動;
-m: 表示電源管理資訊狀況;
-f: 表示從指定檔提取報告,用於分析之前保存的sar數據檔;
-P: 表示報告每個CPU的狀態,包括CPU的使用率、上下文切換次數等;
-q: 表示佇列長度和平均負載;
-r: 表示顯示系統記憶體在采樣時間內的使用情況,包括記憶體總量、已用記憶體、空閑記憶體等;
-R: 表示輸出記憶體頁面的統計資訊;
-S: 表示交換空間利用率;
-u [ ALL ]: 表示輸出CPU使用情況的統計資訊,包括使用者態、系統態、空閑態等各個狀態的百分比;
-v: 表示顯示索引節點、檔和其他內核表的狀態,包括inode的數量、使用情況等;
-w: 表示任務建立與系統轉換統計資訊;
-W: 表示輸出系統交換活動資訊;
-y: 表示TTY裝置狀態;
-x: 表示顯示給定行程的狀態,可以指定行程ID來檢視特定行程的效能數據;
-i: 表示設定狀態資訊重新整理的間隔時間,與-o參數結合使用,可以定期將報告數據保存到檔中;
-I {<int> | SUM | ALL | XALL} : 表示中斷資訊狀況;
-n { <keyword> [,…] | ALL }: 表示網路統計資訊, keyword關鍵詞可以是如下這些:
DEV:表示網卡
EDEV:表示網卡(錯誤)
NFS:表示NFS客戶端
NFSD:表示NFS伺服器
SOCK:表示IPv4的Sockets(套接字);
IP:表示IPv4流;
EIP:表示表示IPv4流(錯誤);
ICMP:表示IPv4的ICMP流;
EICMP:表示IPv4的ICMP流(錯誤);
UDP:表示IPv4的UDP流;
SOCK6:表示IPv6的Sockets(套接字);
IP6:表示IPv6流;
EIP6:表示IPv6流(錯誤);
ICMP6:表示IPv6的ICMP流;
EICMP6:表示IPv6的ICMP流(錯誤);
UDP6:表示IPv6的UDP流;
四、sar命令常見例項分析
(一)CPU資源監控分析
1、分析CPU資源使用情況
(1)可以透過-P參數進行,對所有CPU個數進行采樣,每1秒采樣一次,連續采樣3次。
sar -P ALL 1 3
輸出結果如下圖所示:
1)各個監控項參數說明如下:
CPU: all 表示統計資訊為所有 CPU 的平均值。
%user: 顯示在使用者級別(application)執行使用 CPU 總時間的百分比。
%nice: 顯示在使用者級別,用於nice操作,所占用 CPU 總時間的百分比。
%system: 在核心級別(kernel)執行所使用 CPU 總時間的百分比。
%iowait: 顯示用於等待I/O操作占用 CPU 總時間的百分比。
%steal: 虛擬機器管理程式(hypervisor)為另一個虛擬行程提供服務而等待虛擬 CPU 的百分比。
%idle: 顯示 CPU 空閑時間占用 CPU 總時間的百分比。
2)監控指標評判參考方向:
若 %iowait 的值過高,表示硬碟存在I/O瓶頸,即磁盤I/O無法滿足業務需求了;
若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配記憶體,此時應加大記憶體容量;
若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU 。
(2)當CPU是多核時,可以使用「-P」檢視指定CPU使用情況,下標從0開始。當輸入ALL表示輸出所有的cpu狀態。具體如下操作如下圖所:
(3)可以結合-u參數檢視CPU資源使用情況。
對所有CPU個數進行采樣,每1秒采樣一次,連續采樣3次。
sar -u 13
或如下命令
sar -u ALL 1 3
上述命令執行結果如下所示:
(4)
可以結合-p參數檢視CPU資源使用情況。
對所有CPU個數進行采樣,每1秒采樣一次,連續采樣3次。
sar -p 13
上述命令執行結果如下圖所示;
(5) 可以結合-o參數把上面命令的輸出報告資訊保存到一個二進制檔裏,如下命令所示:
sar -o /tmp/haodao.txt -u 13
上述命令表示將 sar -u 1 3 輸出結果保存到 /tmp/haodao.txt 檔中,此時是以二進制形式存放的;
(6)可以結合-f參數檢視保存的 二進制結果檔 /tmp/haodao.txt ,如下命令所示:
sar -u -f /tmp/haodao.txt
(7)可以透過 sadf 命令將二進制檔 /tmp/haodao.txt 轉換成資料庫可讀的格式如csv的格式檔 /tmp/haodao.csv ,方便出圖示統計。如下命令所示:
sadf -d /tmp/haodao.txt
可以借助sed命令將上述檔中帶的
;
統一轉化成
,
格式,方便統計。如下命令所示:
sadf -d /tmp/haodao.txt |sed 's/;/,/g' > /tmp/haodao.csv
(二)記憶體資源監控分析
1、分析記憶體資源使用情況
(1)可以結合-r參數 檢視記憶體使用情況,每1秒鐘采樣一次,連續采樣5次。
sar -r 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
kbmemfree: 顯示空閑的實體記憶體大小;
kbmemused: 顯示使用中的實體記憶體大小;
%memused: 顯示實體記憶體使用率;
kbbuffers: 顯示內核中作為緩沖區使用的實體記憶體大小,kbbuffers和kbcached這兩個值就是free命令中的buffer和cache;
kbcached: 顯示緩存的檔大小;
kbcommit: 顯示保證當前系統正常執行所需要的最小記憶體,即為了確保記憶體不溢位而需要的最少記憶體(實體記憶體+Swap分區);
%commit: 顯示這個值是kbcommit與記憶體總量(實體記憶體+swap分區)的一個百分比的值;
kbactive: 顯示活動記憶體量(以KB為單位)(最近使用過且通常不會被回收,除非絕對必要);
kbinact: 顯示以KB為單位的非活動記憶體量(較早以前使用過。它更適合被回收以用於其他目的);
kbdirty: 顯示等待寫回磁盤的記憶體量(KB);
(三)磁盤資源監控分析
1、分析磁盤資源使用情況
(1)可以結合-d參數 檢視磁盤使用情況,每1秒鐘采樣一次,連續采樣5次。
sar -d 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
DEV: 表示磁盤裝置的名稱,如果不加-p,會顯示dev253-0類似的裝置名稱,因此加上-p顯示的名稱更直接;
tps: 表示每秒I/O的傳輸總數;
rd_sec/s: 表示每秒讀取的磁區的總數;
wr_sec/s: 表示每秒寫入的磁區的 總數;
avgrq-sz: 表示平均每次次磁盤I/O操作的數據大小(磁區);
avgqu-sz: 表示磁盤請求佇列的平均長度;
await: 表示從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求佇列等待時間,單位是毫秒(1秒等於1000毫秒),等於尋道時間+佇列時間+服務時間;
svctm: 表示I/O的服務處理時間,即不包括請求佇列中的時間;
%util: 表示I/O請求占用的CPU百分比,值越高,說明I/O越慢;
(2)
可以結合-d及-p參數
檢視磁盤使用情況,每1秒鐘采樣一次,連續采樣5次。
sar -d -p 15
上述命令執行結果如下圖所示:
(四)磁盤I/O監控分析
1、分析磁盤I/O使用情況
(1)可以結合-b參數 檢視I/O和傳遞速率的統計資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -b 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
ps : 表示磁盤每秒鐘的IO總數,等於iostat中的tps;
rtps : 表示每秒鐘從磁盤讀取的IO總數;
wtps : 表示每秒鐘從寫入到磁盤的IO總數;
bread/s: 表示 每秒鐘從磁盤讀取的塊總數;
bwrtn/s : 表示每秒鐘此寫入到磁盤的塊總數;
(五)swap分區監控分析
1、分析swap分區使用情況
(1)可以結合-W參數 檢視swap分區的統計資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -W 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
pswpin/s : 表示每秒從交換分區到系統的交換頁面(swap page)數量;
pswpout/s : 表示每秒從系統交換到swap的交換頁面(swap page)的數量;
(六)平均負載監控分析
1、檢視平均負載使用情況
(1)可以結合-q參數 檢視行程佇列長度和平均負載狀態統計資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -q 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
runq-sz: 表示執行佇列的長度(等待執行的行程數,每核的CP不能超過3個);
plist-sz : 表示行程列表中的行程(processes)和執行緒數(threads)的數量;
ldavg-1 : 表示最後1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推;
ldavg-5 : 表示最後5分鐘的CPU平均負載;
ldavg-15 : 表示最後15分鐘的CPU平均負載;
(七)行程及檔狀態監控分析
1、檢視行程及檔狀態資訊
(1)可以結合-v參數檢視 行程、inode、檔和鎖表狀態資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -v 15
上述命令執行結果如下所示:
1)各個監控項參數說明如下:
dentunusd: 表示在緩沖目錄條目中沒有使用的條目數量;
file-nr: 表示被系統使用的檔控制代碼數量;
inode-nr : 表示已經使用的索引數量;
pty-nr: 表示使用的pty數量;
(八)記憶體分頁統計狀態監控分析
1、檢視記憶體分頁統計狀態資訊
(1)可以結合-B參數檢視 記憶體頁面的交換活動 狀態資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -B 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
pgpgpgin/s: 表示每秒從磁盤或SWAP置換到記憶體的字節數(KB);
pgpgout/s: 表示每秒從記憶體置換到磁盤或SWAP的字節數(KB);
fault/s: 表示每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor);
majflt/s: 表示每秒鐘產生的主缺頁數;
pgfree/s: 表示每秒被放入空閑佇列中的頁個數;
pgscank/s: 表示每秒被 kswapd 掃描的頁個數;
pgscand/s: 表示每秒直接被掃描的頁個數;
pgsteal/s: 表示每秒鐘從 cache 中被清除來滿足記憶體需要的頁個數;
%vmeff: 表示每秒清除的頁(pgsteal)占總掃描頁(pgscank + pgscand)的百分比;
(九)任務建立和系統切換活動監控分析
1、檢視
任務建立和系統切換活動
狀態資訊
(1)可以結合-w參數 檢視 任務建立和系統切換活動 狀態資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -w 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
proc/s:表示每秒建立的任務總數;
cswch/s:表示每秒上下文切換的總數;
(十)網路統計狀態監控分析
1、檢視網路統計狀態資訊
(1)可以結合-n參數跟DEV 檢視 網路相關的統計 資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -n DEV 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
IFACE: 表示本地網卡介面的名稱;
rxpck/s: 表示每秒鐘接收的封包;
txpck/s: 表示每秒鐘發送的資料庫;
rxKB/S: 表示每秒鐘接收的封包大小,單位為KB;
txKB/S: 表示每秒鐘發送的封包大小,單位為KB;
rxcmp/s: 表示每秒鐘接收的壓縮封包;
txcmp/s: 表示每秒鐘發送的壓縮包;
rxmcst/s: 表示每秒鐘接收的多播封包;
(2)可以結合-n參數跟 EDEV顯示關於網路錯誤的統計數據 資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -n EDEV 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
IFACE: 表示網卡名稱;
rxerr/s: 表示每秒鐘接收到的損壞的封包;
txerr/s : 表示每秒鐘發送的封包錯誤數;
coll/s: 表示當發送封包時候,每秒鐘發生的沖撞(collisions)數,這個是在半雙工模式下才有;
rxdrop/s : 表示當由於緩沖區滿的時候,網卡裝置接收端每秒鐘丟掉的網路包的數目;
txdrop/s : 表示當由於緩沖區滿的時候,網路裝置發送端每秒鐘丟掉的網路包的數目;
txcarr/s : 表示當發送封包的時候,每秒鐘載波錯誤發生的次數;
rxfram : 表示在接收封包的時候,每秒鐘發生的幀對其錯誤的次數;
rxfifo : 表示在接收封包的時候,每秒鐘緩沖區溢位的錯誤發生的次數;
txfifo : 表示在發生封包 的時候,每秒鐘緩沖區溢位的錯誤發生的次數;
(3)可以結合-n參數跟 SOCK顯示 統計socket連線資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -n SOCK 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
totsck: 表示當前被使用的socket總數;
tcpsck: 表示當前正在被使用的TCP的socket總數;
udpsck: 表示當前正在被使用的UDP的socket總數;
rawsck: 表示當前正在被使用於RAW的skcket總數;
if-frag: 表示當前的IP分片的數目;
tcp-tw: 表示TCP套接字中處於TIME-WAIT狀態的連線數量;
(4)可以結合-n參數跟TCP 顯示 TCP連線的統計 資訊 ,每1秒鐘采樣一次,連續采樣5次。
sar -n TCP 15
上述命令執行結果如下圖所示:
1)各個監控項參數說明如下:
active/s : 表示新的主動連線;
passive/s: 表示新的被動連線;
iseg/s : 表示接受的段;
oseg/s : 表示輸出的段;
五、總結
工欲善其事,必先利其器,實用的命令可以讓你在實際工作中如虎添翼。sar這個命令選項參數眾多。以上只是列舉一些常用的參數並進行常用的效能場景進行分析舉例。大家如果想深入使用這個命令,可以自行去使用一番,相信你在熟悉該命令後,在Linux系統效能分析方面會收獲更多!
更多精彩
關註公眾號 「 浩道Linux 」
浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 、 網路安全 、 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。
喜歡的話,記得 點「贊」 和 「在看」 哦