1、iostat安裝與用法介紹java
主要用於監控系統設備的IO負載狀況,iostat首次運行時顯示自系統啓動開始的各項統計信息,以後運行iostat將顯示自上次運行該命令之後的統計信息。ios
用戶能夠經過指定統計的次數和時間來得到所需的統計信息。express
一、安裝(RedHat系列)api
查看系統是否安裝這個命令緩存
#which iostat ##顯示以下,表示系統已經安裝了 /usr/bin/iostat 若是沒有安裝,則安裝 #yum install sysstat -y
二、語法bash
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ] -d 表示顯示設備(磁盤)使用狀態 -x 表示顯示和io相關的擴展數據 -k 表示某些使用block爲單位的列強制使用Kilobytes爲單位
用法1:併發
#iostat -x -k Linux 2.6.18-308.el5 (Ser108) 10/31/2014 avg-cpu: %user %nice %system %iowait %steal %idle 0.01 0.00 0.00 0.04 0.00 99.95 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.97 0.01 0.58 0.20 6.29 21.98 0.02 28.71 6.81 0.40 sda1 0.00 0.00 0.00 0.00 0.00 0.00 14.83 0.00 8.87 7.90 0.00 sda2 0.00 0.00 0.00 0.00 0.00 0.00 35.35 0.00 5.23 4.60 0.00 sda3 0.00 0.97 0.01 0.58 0.20 6.29 21.98 0.02 28.71 6.81 0.40
注:若是%util接近100%,說明產生的I/O請求太多,I/O系統已經滿負載,該磁盤可能存在瓶頸。less
用法2:async
#iostat -d -k 2 --其中2表示數據顯示每隔2秒刷新一次 輸出以下: Linux 2.6.18-308.el5 (Ser108) 11/05/2014 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.82 0.18 8.47 857070 39382031 sda1 0.00 0.00 0.00 869 59 sda2 0.00 0.00 0.00 760 0 sda3 0.82 0.18 8.47 855221 39381972 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 10.45 0.00 121.39 0 244 sda1 0.00 0.00 0.00 0 0 sda2 0.00 0.00 0.00 0 0 sda3 10.45 0.00 121.39 0 244
輸出信息解釋:ide
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.) "一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合併爲"一次I/O請求"。"一次傳輸"請求的大小是未知的。 kB_read/s:每秒從設備(drive expressed)讀取的數據量; kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量; kB_read:讀取的總數據量; kB_wrtn:寫入的總數量:這些單位都爲Kilobytes,即KB
三、指定監控的設備
#iostat -d sda 2
-x 參數 該選項將用於顯示和io相關的擴展數據,能夠獲取更詳細的數據,
例如:
#iostat -d -x -k 1 4 --表示每1秒刷新一次,一共刷新4次。 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 1.29 0.01 0.81 0.18 8.47 21.18 0.03 39.95 5.98 0.49 sda1 0.00 0.00 0.00 0.00 0.00 0.00 14.73 0.00 9.71 8.75 0.00 sda2 0.00 0.00 0.00 0.00 0.00 0.00 35.35 0.00 5.23 4.60 0.00 sda3 0.00 1.29 0.01 0.81 0.18 8.47 21.18 0.03 39.95 5.98 0.49 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 3.00 0.00 18.00 0.00 80.00 8.89 0.88 32.56 2.72 4.90 sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sda3 0.00 3.00 0.00 18.00 0.00 80.00 8.89 0.88 32.56 2.72 4.90
輸出信息解釋:
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用須要讀取數據的時候,VFS將請求發到各個FS,若是FS發現不一樣的讀取請求讀取的是相同Block的數據,FS會將這個請求合併Merge); wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。 r/s: The number of read requests that were issued to the device per second 每秒發出的讀取請求的數量 w/s: The number of write requests that were issued to the device per second 沒面發出的寫入請求的數量 rkB/s: The number of kilobytes read from the device per second 以千字節每秒從設備讀取數 wkB/s: The number of kilobytes written to the device per second. 以千字節每秒從設備寫入取數 avgrq-sz 平均請求扇區的大小 avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。 await: 每個IO請求的處理的平均時間(單位是微秒毫秒)。這裏能夠理解爲IO的響應時間,通常地系統IO響應時間應該低於5ms,若是大於10ms就比較大了。 這個時間包括了隊列時間和服務時間,也就是說,通常狀況下,await大於svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統出了問題。 svctm 表示平均每次設備I/O操做的服務時間(以毫秒爲單位)。若是svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,若是await的值遠高於svctm的值,則表示I/O隊列等待太長,系統上運行的應用程序將變慢。 %util: 這個值越小越好,在統計時間內全部處理IO時間,除以總共統計時間。例如,若是統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閒置,那麼該設備的%util = 0.8/1 = 80%,因此該參數暗示了設備的繁忙程度 。通常地,若是該參數是100%表示設備已經接近滿負荷運行了(固然若是是多磁盤,即便%util是100%,由於磁盤的併發能力,因此磁盤使用未必就到了瓶頸)。 rsec/s:每秒讀取的扇區數; wsec/: 每秒寫入的扇區數。
-c 參數,查看cpu信息
#iostat -c 1 2 #表示每1秒刷新一次,一共刷新2次 Linux 2.6.32-431.23.3.el6.x86_64 (zookeeper1) 05/27/2016 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.92 0.00 0.27 0.32 0.00 98.49 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00
四、常見用法:
#iostat -d -k 1 10 #查看TPS和吞吐量信息 #iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await) #iostat -c 1 10 #查看cpu狀態
五、實例分析
#iostat -d -k 1 8 Linux 2.6.32-504.el6.x86_64 (kvm5) 05/27/2016 _x86_64_ (8 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 25.41 3.72 93.20 16601966 416182172 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 42.00 0.00 104.00 0 104 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 52.00 0.00 172.00 0 172 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 34.00 0.00 128.00 0 128 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 9.00 0.00 16.00 0 16 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 25.00 0.00 72.00 0 72 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 31.00 0.00 80.00 0 80 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 24.00 0.00 92.00 0 92 以上能夠看到,磁盤每秒傳輸次數平均約30,每秒磁盤讀取較少,寫入較多,約爲100kB #iostat -d -k -x 1 5 Linux 2.6.32-504.el6.x86_64 (kvm5) 05/27/2016 _x86_64_ (8 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 1.27 0.11 25.30 3.72 93.20 7.63 0.03 1.04 35.76 0.89 0.71 1.81 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 7.00 0.00 32.00 0.00 132.00 8.25 0.12 3.84 0.00 3.84 1.75 5.60 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 7.00 0.00 58.00 0.00 420.00 14.48 0.03 0.60 0.00 0.60 0.59 3.40 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 0.00 27.00 0.00 76.00 5.63 0.01 0.37 0.00 0.37 0.33 0.90 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.00 0.00 5.00 0.00 32.00 12.80 0.02 4.80 0.00 4.80 4.80 2.40 以上能夠看到,磁盤的平均響應時間較小,爲0,磁盤使用率平均爲3.0左右,比較小。
2、iotop工具
一、介紹
iotop命令是專門顯示硬盤IO的命令,界面風格相似top命令。這個命令只有在kernelv2.6.20及之後的版本中才有。
二、安裝
#yum install iotop -y
三、實例
#iotop 顯示以下,能夠看到有一個進程,io佔用比較多 Total DISK READ: 6.42 M/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1476 be/4 root 6.42 M/s 0.00 B/s 0.00 % 57.63 % java -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -server -Xm~2.5.4-SNAPSHOT-FERDI/lib/stax2-api-3.1.1.jar:/root/dubbo-monitor-simple-2 1475 be/4 root 0.00 B/s 92.21 K/s 0.00 % 0.00 % java -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -server -Xm~2.5.4-SNAPSHOT-FERDI/lib/stax2-api-3.1.1.jar:/root/dubbo-monitor-simple-2 1455 be/4 root 0.00 B/s 7.68 K/s 0.00 % 0.00 % java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/~per.server.quorum.QuorumPeerMain /usr/local/zookeeper/bin/../conf/zoo.cfg 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/1] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0] 12 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/1] 13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cgroup] 14 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] 15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 16 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [async/mgr] 17 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [pm] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [sync_supers] 19 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bdi-default] 20 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd/0] 21 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd/1]
二、參數
Options: --version show program's version number and exit -h, --help show this help message and exit -o, --only only show processes or threads actually doing I/O -b, --batch non-interactive mode -n NUM, --iter=NUM number of iterations before ending [infinite] -d SEC, --delay=SEC delay between iterations [1 second] -p PID, --pid=PID processes/threads to monitor [all] -u USER, --user=USER users to monitor [all] -P, --processes only show processes, not all threads -a, --accumulated show accumulated I/O instead of bandwidth -k, --kilobytes use kilobytes instead of a human friendly unit -t, --time add a timestamp on each line (implies --batch) -q, --quiet suppress some lines of header (implies --batch)
2、vmstat 工具
vmstat是一個即時顯示內存使用狀況的工具,通常系統自帶的都有
vmstat 使用方法:
vmstat [-V] [-n] [delay [count]] -V 顯示vmstat的版本; -n causes the headers not to be reprinted regularly. -a 顯示全部激活和未激活內存的狀態;print inactive/active page stats. -d 顯示硬盤統計信息;prints disk statistics -D 顯示硬盤分區表;prints disk table -p 顯示硬盤分區讀寫狀態等;prints disk partition statistics -s 顯示內存使用狀況;prints vm table -m prints slabinfo -S 定義單位,k K delay 是兩次刷新時間間隔; 單位體積: k:1000 K:1024 m:1000000 M:1048576 (默認是 K) count 刷新次數;
一個實例:
#vmstat 3 5 ##表示每3秒更新一次輸出信息,連續統計5次結束。 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 5 1 0 82471648 149068 7528352 0 0 0 12 0 1 16 18 66 0 0 3 0 0 82471760 149068 7528352 0 0 0 72 79652 150274 17 20 63 0 0 3 0 0 82471936 149068 7528352 0 0 0 64 79561 150275 16 20 64 0 0 5 0 0 82471936 149068 7528352 0 0 0 88 79784 150146 17 20 62 0 0
解釋:
r :The number of processes waiting for run time. 等待運行時間的進程數,即等待的進程數、 b :The number of processes in uninterruptible sleep. 在等待io的進程數 swpd: 虛擬內存的使用量 free:空閒內存量 buff:緩衝區中的內存 cache:被用來作爲高速緩存的內存數 si: 從磁盤交換到內存的交換頁數量,單位:KB/秒。 so: 從內存交換到磁盤的交換頁數量,單位:KB/秒。 bi: 發送到塊設備的塊數,單位:塊/秒。 bo: 從塊設備接收到的塊數,單位:塊/秒。 in: 每秒的中斷數,包括時鐘中斷。 cs: 每秒的環境(上下文)轉換次數。 us:用戶進程使用的時間 。以百分比表示。 sy:系統進程使用的時間。 以百分比表示。 id:中央處理器的空閒時間 。以百分比表示。 wa:io等待時間 st:Time stolen from a virtual machine