linux系統管理工具sar(一)
- 監控網卡流量
#sar -n DEV 1 1 (1秒內取1次) Linux 3.10.0-123.9.3.el7.x86_64 (iZ25wvw5wozZ) 01/22/2018 _x86_64_ (16 CPU) 03:08:01 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 03:08:02 PM cni0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 03:08:02 PM eth0 911.00 740.00 209.74 244.55 0.00 0.00 0.00 03:08:02 PM eth1 0.00 64.00 0.00 67.41 0.00 0.00 0.00 03:08:02 PM lo 13.00 13.00 0.69 0.69 0.00 0.00 0.00 03:08:02 PM flannel.1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 03:08:02 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: cni0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 911.00 740.00 209.74 244.55 0.00 0.00 0.00 Average: eth1 0.00 64.00 0.00 67.41 0.00 0.00 0.00 Average: lo 13.00 13.00 0.69 0.69 0.00 0.00 0.00 Average: flannel.1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 註:sar -n DEV 查看當前服務器的網絡流量信息 rxpck/s: 每秒收包的數量 txpck/s: 每秒發包的數量
說明:
(1)rxpck/s:每秒鐘收到數據包的數量.
(2)txpck/s:每秒鐘發送數據包的數量.
(3)rxkB/s:每秒鐘接收的字節(KB).
(4)txkB/s:每秒鐘發送的字節(KB).
(5)rxcmp/s:每秒收到的壓縮包的數量
(6)txcmp/s:每秒發出的壓縮包的數量
(7)rxmcst/s:每秒收到的廣播包的數量
網絡設備的數據來源於/proc/net/dev.
我這裏嘗試用ssh的壓縮功能進行傳輸,結果也沒看到壓縮包的數量有變化. - 監控cpu資源
#sar 1 (將所有CPU合並到一起進行監控) 03:08:57 PM CPU %user %nice %system %iowait %steal %idle 03:08:58 PM all 5.47 0.00 5.97 2.58 0.06 85.91 03:08:59 PM all 5.85 0.00 6.29 2.33 0.06 85.46 03:09:00 PM all 4.76 0.00 6.27 1.57 0.06 87.34 03:09:01 PM all 6.67 0.00 6.17 1.83 0.13 85.21 03:09:02 PM all 4.97 0.00 6.35 1.32 0.06 87.30 03:09:03 PM all 4.47 0.00 6.30 0.00 0.06 89.17 03:09:04 PM all 3.95 0.00 5.71 0.00 0.06 90.27 。。。。。 03:09:07 PM all 3.87 0.00 6.08 0.00 0.55 89.50 Average: all 4.92 0.00 6.04 0.97 0.07 88.01
#sar -P ALL 1 1 (可以顯示每個CPU現在的負載) 03:10:08 PM CPU %user %nice %system %iowait %steal %idle 03:10:09 PM all 6.21 0.00 6.65 3.32 0.13 83.69 03:10:09 PM 0 30.21 0.00 10.42 52.08 0.00 7.29 03:10:09 PM 1 8.00 0.00 1.00 2.00 0.00 89.00 03:10:09 PM 2 4.00 0.00 1.00 0.00 0.00 95.00 03:10:09 PM 3 0.00 0.00 0.00 0.00 0.00 100.00 03:10:09 PM 4 1.98 0.00 0.99 0.00 0.99 96.04 03:10:09 PM 5 3.00 0.00 1.00 0.00 0.00 96.00 03:10:09 PM 6 2.00 0.00 1.00 0.00 0.00 97.00 03:10:09 PM 7 14.14 0.00 85.86 0.00 0.00 0.00 Average: CPU %user %nice %system %iowait %steal %idle Average: all 6.21 0.00 6.65 3.32 0.13 83.69 Average: 0 30.21 0.00 10.42 52.08 0.00 7.29 Average: 1 8.00 0.00 1.00 2.00 0.00 89.00 Average: 2 4.00 0.00 1.00 0.00 0.00 95.00 Average: 3 0.00 0.00 0.00 0.00 0.00 100.00 Average: 4 1.98 0.00 0.99 0.00 0.99 96.04 Average: 5 3.00 0.00 1.00 0.00 0.00 96.00 Average: 6 2.00 0.00 1.00 0.00 0.00 97.00 Average: 7 14.14 0.00 85.86 0.00 0.00 0.00
說明:%user,%system,%iowait,%idle分別表示用戶態進程占用CPU百分比,系統態進程占用CPU百分比,CPU等待IO百分比,CPU空閑百分比。
重點說%nice和%steal,這是vmstat所沒有的.
%nice:如果一個程序在運行時用nice調整它的優先級,且優先級在1-19之間,並且是用戶態的進程,這時%nice才會體現出來,%steal:一般在運行虛擬機的宿主機才用到,比如xen,QEMU,Bochs等等。 - 監控內存資源
#sar -r 1 03:20:55 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 03:20:56 PM 1754084 14239212 89.03 204100 2997052 25525216 159.60 12852348 805468 0 03:20:57 PM 1753824 14239472 89.03 204100 2997456 25525216 159.60 12852572 805740 0 03:20:58 PM 1753668 14239628 89.03 204100 2997704 25525216 159.60 12852640 805904 0 03:20:59 PM 1753200 14240096 89.04 204108 2997936 25525216 159.60 12852728 806048 0 03:21:00 PM 1752548 14240748 89.04 204108 2998116 25525176 159.60 12852812 806244 0 03:21:01 PM 1751756 14241540 89.05 204108 2998868 25525176 159.60 12853020 806808 0 。。。。。 03:21:01 PM 1749996 14243300 89.06 204112 3001284 25526988 159.61 12854832 807716 0 Average: 1752725 14240571 89.04 204105 2998345 25525458 159.60 12852993 806275 0
說明:
(1)kbmemfree:這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間。
(2)kbmemused:這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間。
(3)%memused:這個值是kbmemused和內存總量(不包括swap)的一個百分比。
(4)kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache。
(5)kbcommit:保證當前系統所需要的內存,即為了確保不溢出而需要的內存(RAM+swap)。
(6)%commit:這個值是kbcommit與內存總量(包括swap)的一個百分比。
對比:#free -h total used free shared buff/cache available Mem: 15G 10G 1.6G 777M 3.4G 3.9G Swap: 0B 0B 0B
- 監控內存分頁
#sar -B 1 03:33:33 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff 03:33:34 PM 0.00 14504.00 3192.00 0.00 8984.00 0.00 0.00 0.00 0.00 03:33:35 PM 0.00 0.00 866.00 0.00 3294.00 0.00 0.00 0.00 0.00 03:33:36 PM 0.00 256.00 845.00 0.00 3711.00 0.00 0.00 0.00 0.00 03:33:37 PM 0.00 19964.00 4765.00 0.00 3803.00 0.00 0.00 0.00 0.00 03:33:38 PM 0.00 10620.00 3029.00 0.00 8643.00 0.00 0.00 0.00 0.00 03:33:39 PM 0.00 26956.00 6252.00 0.00 4644.00 0.00 0.00 0.00 0.00 03:33:40 PM 0.00 26208.00 5834.00 0.00 12574.00 0.00 0.00 0.00 0.00 。。。。 03:33:40 PM 0.00 20524.44 4968.89 0.00 15342.22 0.00 0.00 0.00 0.00 Average: 0.00 14462.28 3626.71 0.00 7054.63 0.00 0.00 0.00 0.00
說明:
(1)pgpgin/s:表示每秒從磁盤或SWAP置換到內存的字節數(KB)
(2)pgpgout/s:表示每秒從內存置換到磁盤或SWAP的字節數(KB)
(3)fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)
(4)majflt/s:每秒鐘產生的主缺頁數
(5)pgfree/s:每秒被放入空閑隊列中的頁個數
(6)pgscank/s:每秒被kswapd掃描的頁個數
(7)pgscand/s:每秒直接被掃描的頁個數
(8)pgsteal/s:每秒鐘從cache中被清除來滿足內存需要的頁個數
(9)%vmeff:每秒清除的頁(pgsteal)占總掃描頁(pgscank+pgscand)的百分比。 - 關於I節點,文件和其它內核表的監控
#sar -v 1 03:41:43 PM dentunusd file-nr inode-nr pty-nr 03:41:44 PM 38321 3296 22449 2 03:41:45 PM 38327 3296 22455 2 03:41:46 PM 38329 3296 22446 2 03:41:47 PM 38329 3296 22448 2 03:41:48 PM 38331 3296 22447 2 03:41:49 PM 38331 3296 22447 2 03:41:50 PM 38331 3296 22447 2 03:41:51 PM 38336 3296 22448 2 。。。。 03:41:51 PM 38336 3296 22449 2 Average: 38330 3296 22448 2
說明:
(1)dentunusd:在緩沖目錄條目中沒有使用的條目數量。
dentunusd數據的數據來源是/proc/sys/fs/dentry-state的第二項數據.
要弄明白它的意義,我們首先要弄明白dcache(目錄高速緩存),因為系統中所有的inode都是通過文件名來訪問的,而為了解決文件名到inode轉換的時間,就引入了dcache.
它是VFS層為當前活動和最近使用的名字維護的一個cache.
dcache中所有處於unused狀態和negative(消極)狀態的dentry對象都通鏈入到dentry_unused鏈表中,這種dentry對象在回收內存時可能會被釋放.
如果我們在系統中運行ls -ltR /etc/會看到dentunusd的數量會多起來.
而通過mount -o remount /dev/sda1會看到dentunusd會迅速會回收.
(2)file-nr:被系統使用的文件句柄數量。
file-nr的的數據來源是/proc/sys/fs/file-nr文件的第一項數據.
實際上file-nr不是一個準確的值,file-nr每次增加的步長是64(64位系統),例如現在file-nr為2528,實際上可能只打開了2527個文件,而此時你打開兩個文件後,它就會變成2592,而不是2530.
(3)inode-nr:使用的索引節點數量。
inode-nr的數據來源是/proc/sys/fs/inode-nr文件的第一項數據減去第二項數據的值.
inode-nr文件的第一項數據是已經分配過的INODE節點.第二項數據是空閑的INODE節點.
例如,inode-nr文件裏的值為:13720 7987
我們新建一個文件file1,此時inode-nr第一項數據會加1,就是13721,表示系統裏建立了這麽多的inode.
我們再刪除掉file1,此時就會變成13720.
空閑的INODE節點表示我們已經裏這麽多的INODE節點曾經有過被利用,但沒有被釋放.
所以INODE節點總數減去空閑的INODE,就是正在被用的INODE.
最後通過使用mount -o remount /dev/sda1命令,空閑節點會被刷新,所以inode-nr的值會有所變化.
(4)pty-nr:使用的pty數量。
pty-nr的數據來源是/proc/sys/kernel/pty/nr
表示登陸過的終端總數,如果我們登錄過10回,退出了3回,最後的結果還是10回. - 監控中斷
#sar -I ALL 1 03:47:59 PM INTR intr/s 03:48:00 PM 0 0.00 03:48:00 PM 1 0.00 03:48:00 PM 2 0.00 03:48:00 PM 3 0.00 03:48:00 PM 4 0.00 03:48:00 PM 5 0.00 03:48:00 PM 6 0.00 03:48:00 PM 7 0.00
說明:
(1)INTR表示中斷號,中斷號代表的意義可以到/proc/interrupts查詢.
(2)intr/s表示每秒的中斷次數. - 平均負載和隊列的監控
#sar -q 1 04:08:37 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 04:08:38 PM 1 2274 2.24 2.55 2.68 0 04:08:39 PM 3 2274 2.24 2.55 2.68 1 04:08:40 PM 2 2274 2.24 2.55 2.68 0 04:08:41 PM 2 2274 2.24 2.55 2.68 0 04:08:42 PM 1 2274 2.14 2.53 2.67 0 04:08:43 PM 2 2274 2.14 2.53 2.67 0 。。。。 04:08:44 PM 3 2274 2.14 2.53 2.67 0 Average: 2 2274 2.20 2.54 2.68 0
說明:
(1)runq-sz:處於運行或就緒的進程數量
(2)plist-sz:現在進程的總數(包括線程).
(3)ldavg-1:最近一分鐘的負載.
(4)ldavg-5:最近五分鐘的負載.
(5)ldavg-15:最近十分鐘的負載.
(6)平均負載和隊列的數據來源於/proc/loadavg
linux系統管理工具sar(一)