sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以 從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、 進程活動及IPC有關的活動等。本文主要以CentOS ...
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以
從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、
進程活動及IPC有關的活動等。本文主要以CentOS 6.3 x64系統為例,介紹sar命令。
格式
sar [options] [-A] [-o file] t [n]
參數 | 說明 |
---|---|
t | 為採樣間隔,預設是秒 |
n | 為採樣次數,預設是1 |
-o | file 表示將命令結果以二進位格式存放在文件中,file是文件名 |
-A | 所有報告的總和 |
-u | 輸出CPU使用情況的統計信息 |
-v | 輸出inode,文件和其他內核表的統計信息 |
-d | 輸出每一個塊設備的活動信息 |
-r | 輸出記憶體和交換空間的統計信息 |
-b | 顯示I/O和傳送速率的統計信息 |
-a | 文件讀寫情況 |
-c | 輸出進程統計信息,每秒創建的進程數 |
-R | 輸出記憶體頁面的統計信息 |
-y | 終端設備活動情況 |
-w | 輸出系統交換活動信息 |
CPU 資源監控
sar -u -o test 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU)
16:07:18 CPU %user %nice %system %iowait %steal %idle
16:07:26 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:34 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:42 all 0.00 0.00 0.00 0.00 0.00 100.00
16:07:50 all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.00 0.00 0.00 100.00
%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
監控inode、文件和其他內核表
sar -v 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU)
16:32:40 dentunusd file-nr inode-nr pty-nr
16:32:48 5296 288 7672 2
16:32:56 5296 288 7672 2
16:33:04 5296 288 7672 2
16:33:12 5296 288 7672 2
Average: 5296 288 7672 2
dentunusd : 目錄高速緩存中未被使用的條目數量
file-nr : 文件句柄(file handle) 的使用數量
inode-nr : 索引節點句柄(inode handle) 的使用數量
pty-nr : 使用的pty數量
監控記憶體和交換空間
sar -r 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/12/15 _x86_64_ (1 CPU)
16:41:15 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
16:41:23 301116 200320 39.95 10688 147824 56648 2.77
16:41:31 301116 200320 39.95 10688 147824 56648 2.77
16:41:39 301116 200320 39.95 10688 147824 56648 2.77
16:41:47 301116 200320 39.95 10688 147824 56648 2.77
Average: 301116 200320 39.95 10688 147824 56648 2.77
-r Report memory utilization statistics. The following values are displayed:
kbmemfree : 這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused : 這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
%memused : 這個值是kbmemused和記憶體總量(不包括swap)的一個百分比.
kbbuffers :這個值就是free命令中的buffer.
kbcached :這個值就是free命令中的cache.
kbcommit :保證當前系統所需要的記憶體,即為了確保不溢出而需要的記憶體(RAM+swap).
%commit :這個值是kbcommit與記憶體總量(包括swap)的一個百分比.
記憶體分頁監控
sar -B 8 4
Linux 2.6.32-358.el6.x86_64 (nagios_s1) 11/13/15 _x86_64_ (1 CPU)
11:08:48 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
11:08:56 0.00 0.00 4.25 0.00 9.25 0.00 0.00 0.00 0.00
11:09:04 0.00 0.00 5.25 0.00 10.75 0.00 0.00 0.00 0.00
11:09:12 0.00 0.00 3.75 0.00 8.89 0.00 0.00 0.00 0.00
11:09:20 0.00 0.00 3.75 0.00 10.11 0.00 0.00 0.00 0.00
Average: 0.00 0.00 4.25 0.00 9.75 0.00 0.00 0.00 0.00
Report paging statistics. The following values are displayed:
pgpgin/s: 表示每秒從磁碟或SWAP置換到記憶體的位元組數(KB)
pgpgout/s: 表示每秒從記憶體置換到磁碟或SWAP的位元組數(KB)
fault/s: 每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)
majflts/s: 每秒鐘產生的主缺頁數
pgfree/s: 每秒被放入空閑隊列中的頁個數
pgscank/s: 每秒被kswapd掃描的頁個數
pgscand/s: 每秒直接被掃描的頁個數
pgsteal/s: 每秒鐘從cache中被清除來滿足記憶體需要的頁個數
%vmeff: 每秒清除的頁(pgsteal)占總掃描頁(pgscank+pgscand)的百分比
什麼是缺頁
當CPU請求一個不在RAM中的記憶體頁時,會發生缺頁,比如我們從記憶體讀取/寫入數據,而數據未在記憶體,此時都會發生缺頁.
major表示主缺頁,主缺頁是要求輸入/輸出到磁碟的缺頁.
minor表示次缺頁,次缺頁是任何其它的缺頁.
I/O和傳送速率監控
sar -b 8 4
Linux 2.6.18-308.el5xen (tlsgzsit01) 11/13/2015
12:04:30 PM tps rtps wtps bread/s bwrtn/s
12:04:38 PM 10.92 0.00 10.92 0.00 116.44
12:04:46 PM 1.75 0.00 1.75 0.00 53.13
12:04:54 PM 2.23 0.00 2.23 0.00 61.46
12:05:02 PM 1.25 0.00 1.25 0.00 24.94
Average: 4.03 0.00 4.03 0.00 63.92
tps : 每秒鐘物理設備的 I/O 傳輸總量
rtps : 每秒鐘從物理設備讀入的數據總量
wtps : 每秒鐘向物理設備寫入的數據總量
bread/s : 每秒中從物理設備讀入的數據量,單位為 塊/s
bwrtn/s : 每秒中從物理設備寫入的數據量,單位為 塊/s
查看運行隊列中的進程數、系統上的進程大小、平均負載等
sar 與其它命令相比,它能查看各項指標隨時間變化的情況;
sar -q
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 11/02/2017 _x86_64_ (2 CPU)
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
12:10:01 AM 0 150 0.00 0.01 0.05 0
12:20:01 AM 0 150 0.00 0.01 0.05 0
12:30:01 AM 2 150 0.00 0.01 0.05 0
12:40:01 AM 0 150 0.00 0.01 0.05 0
12:50:01 AM 0 150 0.00 0.01 0.05 0
01:00:01 AM 1 150 0.00 0.01 0.05 0
01:10:01 AM 1 150 0.00 0.01 0.05 0
01:20:01 AM 0 150 0.00 0.01 0.05 0
01:30:01 AM 0 150 0.00 0.01 0.05 0
01:40:01 AM 1 150 0.00 0.01 0.05 0
01:50:01 AM 1 150 0.00 0.01 0.05 0
02:00:01 AM 0 150 0.00 0.01 0.05 0
02:10:01 AM 0 150 0.00 0.01 0.05 0
02:20:01 AM 0 150 0.00 0.01 0.05 0
02:30:01 AM 0 150 0.00 0.01 0.05 0
runq-sz:運行隊列的長度(等待運行的進程數)
plist-sz:進程列表中進程(processes)和線程(threads)的數量
ldavg-1:最後1分鐘的系統平均負載
ldavg-5:過去5分鐘的系統平均負載
ldavg-15:過去15分鐘的系統平均負載