共計 4175 個字符,預計需要花費 11 分鐘才能閱讀完成。
本篇內容介紹了“linux 下 sar 命令的用法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
linux sar 命令詳解
2012 年 08 月 21 日 ? CentOS, Linux ? 共 4053 字 ? 字號 小 中 大 ? 評論 1 條 ? 閱讀 41,015 次
sar(System Activity Reporter 系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I /O、CPU 效率、內存使用狀況、進程活動及 IPC 有關的活動等。本文主要以 CentOS 6.3 x64 系統為例,介紹 sar 命令。
sar 命令常用格式
sar [options] [-A] [-o file] t [n]
其中:
t 為采樣間隔,n 為采樣次數,默認值是 1;
-o file 表示將命令結果以二進制格式存放在文件中,file 是文件名。
options 為命令行選項,sar 命令常用選項如下:
-A:所有報告的總和
-u:輸出 CPU 使用情況的統計信息
-v:輸出 inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示 I / O 和傳送速率的統計信息
-a:文件讀寫情況
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
1. CPU 資源監控
例如,每 10 秒采樣一次,連續采樣 3 次,觀察 CPU 的使用情況,并將采樣結果以二進制形式存入當前目錄下的文件 test 中,需鍵入如下命令:
sar -u -o test 10 3
屏幕顯示如下:
17:06:16 CPU %user %nice %system %iowait %steal %idle
17:06:26 all 0.00 0.00 0.20 0.00 0.00 99.80
17:06:36 all 0.00 0.00 0.20 0.00 0.00 99.80
17:06:46 all 0.00 0.00 0.10 0.00 0.00 99.90
Average: all 0.00 0.00 0.17 0.00 0.00 99.83
輸出項說明:
CPU:all 表示統計信息為所有 CPU 的平均值。
%user:顯示在用戶級別 (application) 運行使用 CPU 總時間的百分比。
%nice:顯示在用戶級別,用于 nice 操作,所占用 CPU 總時間的百分比。
%system:在核心級別 (kernel) 運行所使用 CPU 總時間的百分比。
%iowait:顯示用于等待 I / O 操作占用 CPU 總時間的百分比。
%steal:管理程序 (hypervisor) 為另一個虛擬進程提供服務而等待虛擬 CPU 的百分比。
%idle:顯示 CPU 空閑時間占用 CPU 總時間的百分比。
1. 若 %iowait 的值過高,表示硬盤存在 I / O 瓶頸
2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量
3. 若 %idle 的值持續低于 1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU。
如果要查看二進制文件 test 中的內容,需鍵入如下 sar 命令:
sar -u -f test
2. inode、文件和其他內核表監控
例如,每 10 秒采樣一次,連續采樣 3 次,觀察核心表的狀態,需鍵入如下命令:
sar -v 10 3
屏幕顯示如下:
17:10:49 dentunusd file-nr inode-nr pty-nr
17:10:59 6301 5664 12037 4
17:11:09 6301 5664 12037 4
17:11:19 6301 5664 12037 4
Average: 6301 5664 12037 4
輸出項說明:
dentunusd:目錄高速緩存中未被使用的條目數量
file-nr:文件句柄(file handle)的使用數量
inode-nr:索引節點句柄(inode handle)的使用數量
pty-nr:使用的 pty 數量
3. 內存和交換空間監控
例如,每 10 秒采樣一次,連續采樣 3 次,監控內存分頁:
sar -r 10 3
屏幕顯示如下:
輸出項說明:
kbmemfree:這個值和 free 命令中的 free 值基本一致, 所以它不包括 buffer 和 cache 的空間.
kbmemused:這個值和 free 命令中的 used 值基本一致, 所以它包括 buffer 和 cache 的空間.
%memused:這個值是 kbmemused 和內存總量 (不包括 swap) 的一個百分比.
kbbuffers 和 kbcached:這兩個值就是 free 命令中的 buffer 和 cache.
kbcommit:保證當前系統所需要的內存, 即為了確保不溢出而需要的內存(RAM+swap).
%commit:這個值是 kbcommit 與內存總量 (包括 swap) 的一個百分比.
4. 內存分頁監控
例如,每 10 秒采樣一次,連續采樣 3 次,監控內存分頁:
sar -B 10 3
屏幕顯示如下:
輸出項說明:
pgpgin/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) 的百分比
5. I/ O 和傳送速率監控
例如,每 10 秒采樣一次,連續采樣 3 次,報告緩沖區的使用情況,需鍵入如下命令:
sar -b 10 3
屏幕顯示如下:
18:51:05 tps rtps wtps bread/s bwrtn/s
18:51:15 0.00 0.00 0.00 0.00 0.00
18:51:25 1.92 0.00 1.92 0.00 22.65
18:51:35 0.00 0.00 0.00 0.00 0.00
Average: 0.64 0.00 0.64 0.00 7.59
輸出項說明:
tps:每秒鐘物理設備的 I/O 傳輸總量
rtps:每秒鐘從物理設備讀入的數據總量
wtps:每秒鐘向物理設備寫入的數據總量
bread/s:每秒鐘從物理設備讀入的數據量,單位為 塊 /s
bwrtn/s:每秒鐘向物理設備寫入的數據量,單位為 塊 /s
6. 進程隊列長度和平均負載狀態監控
例如,每 10 秒采樣一次,連續采樣 3 次,監控進程隊列長度和平均負載狀態:
sar -q 10 3
屏幕顯示如下:
19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
19:26:00 0 259 0.00 0.00 0.00
19:26:10 0 259 0.00 0.00 0.00
19:26:20 0 259 0.00 0.00 0.00
Average: 0 259 0.00 0.00 0.00
輸出項說明:
runq-sz:運行隊列的長度(等待運行的進程數)
plist-sz:進程列表中進程(processes)和線程(threads)的數量
ldavg-1:最后 1 分鐘的系統平均負載(System load average)
ldavg-5:過去 5 分鐘的系統平均負載
ldavg-15:過去 15 分鐘的系統平均負載
7. 系統交換活動信息監控
例如,每 10 秒采樣一次,連續采樣 3 次,監控系統交換活動信息:
sar – W 10 3
屏幕顯示如下:
19:39:50 pswpin/s pswpout/s
19:40:00 0.00 0.00
19:40:10 0.00 0.00
19:40:20 0.00 0.00
Average: 0.00 0.00
輸出項說明:
pswpin/s:每秒系統換入的交換頁面(swap page)數量
pswpout/s:每秒系統換出的交換頁面(swap page)數量
8. 設備使用情況監控
例如,每 10 秒采樣一次,連續采樣 3 次,報告設備使用情況,需鍵入如下命令:
# sar -d 10 3 –p
屏幕顯示如下:
17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
其中:
參數 - p 可以打印出 sda,hdc 等磁盤設備名稱, 如果不用參數 -p, 設備節點則有可能是 dev8-0,dev22-0
tps: 每秒從物理磁盤 I / O 的次數. 多個邏輯請求會被合并為一個 I / O 磁盤請求, 一次傳輸的大小是不確定的.
rd_sec/s: 每秒讀扇區的次數.
wr_sec/s: 每秒寫扇區的次數.
avgrq-sz: 平均每次設備 I / O 操作的數據大小(扇區).
avgqu-sz: 磁盤請求隊列的平均長度.
await: 從請求磁盤操作到系統完成處理, 每次請求的平均消耗時間, 包括請求隊列等待時間, 單位是毫秒(1 秒 =1000 毫秒).
svctm: 系統處理每次請求的平均時間, 不包括在請求隊列中消耗的時間.
%util:I/ O 請求占 CPU 的百分比, 比率越大, 說明越飽和.
1. avgqu-sz 的值較低時,設備的利用率較高。
2. 當 %util 的值接近 1% 時,表示設備帶寬已經占滿。
要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來
懷疑 CPU 存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑內存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看
懷疑 I / O 存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
“linux 下 sar 命令的用法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!