當前位置: 妍妍網 > 碼農

sar命令多少人沒用過?又一個牛逼的Linux命令!

2024-03-12碼農

關註上方 浩道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,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

喜歡的話,記得 點「贊」 「在看」