linux查看磁盘io使用情况
六種方法
? top命令、vmstat命令、iostat命令、iotop命令、pt-ioprofile命令、pidstat命令
一、 top命令
top - 11:41:22 up 51 min, 2 users, load average: 0.01, 0.04, 0.01
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.2%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4151760k total, 2284628k used, 1867132k free, 47892k buffers
Swap: 4192956k total, 0k used, 4192956k free, 2145020k cached
分析:查看0.4%wa這里,IO等待所占用的CPU時(shí)間的百分比,高過(guò)30%時(shí)IO壓力高
具體的解釋如下:
Tasks: 130 total 進(jìn)程總數(shù)
1 running 正在運(yùn)行的進(jìn)程數(shù)
129 sleeping 睡眠的進(jìn)程數(shù)
0 stopped 停止的進(jìn)程數(shù)
0 zombie 僵尸進(jìn)程數(shù)
Cpu(s):
0.2% us 用戶空間占用CPU百分比
0.1% sy 內(nèi)核空間占用CPU百分比
0.0% ni 用戶進(jìn)程空間內(nèi)改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU百分比
99.2% id 空閑CPU百分比
0.4% wa 等待輸入輸出的CPU時(shí)間百分比
0.0% hi
0.0% si
0.4% wa 的百分比可以大致的體現(xiàn)出當(dāng)前的磁盤io請(qǐng)求是否頻繁。如果 wa的數(shù)量比較大,說(shuō)明等待輸入輸出的的io比較多
二、vmstat命令
命令:vmstat 2 5(每?jī)擅雸?zhí)行一次,執(zhí)行5次)
vmstat參數(shù)解釋:
Procs
?????r: 等待運(yùn)行的進(jìn)程數(shù)
? ? ? ? ? ? b: 處在非中斷睡眠狀態(tài)的進(jìn)程數(shù)
Memory
?? ? swpd: 虛擬內(nèi)存使用情況,單位:KB
?? ? free: 空閑的內(nèi)存,單位KB
?? ? buff: 被用來(lái)做為緩存的內(nèi)存數(shù),單位:KB
Swap
?? ? si: 從磁盤交換到內(nèi)存的交換頁(yè)數(shù)量,單位:KB/秒
?? ? so: 從內(nèi)存交換到磁盤的交換頁(yè)數(shù)量,單位:KB/秒
IO
?? ? bi: 發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒
?? ? bo: 從塊設(shè)備接收到的塊數(shù),單位:塊/秒
System
?? ? in: 每秒的中斷數(shù),包括時(shí)鐘中斷
?? ? cs: 每秒的環(huán)境(上下文)切換次數(shù)
CPU(按 CPU 的總使用百分比來(lái)顯示)
?? ? us: CPU 使用時(shí)間
?? ? sy: CPU 系統(tǒng)使用時(shí)間
?? ? id: 閑置時(shí)間
三、iostat 使用
安裝命令: yum install sysstat?
使用iostat -d -k 2 查看IO情況:
-k:已kb為單位顯示讀寫信息
-m:已mb為單位顯示讀寫信息
device:磁盤名稱
tps:每秒鐘發(fā)送到的I/O請(qǐng)求數(shù).
Blk_read/s:每秒讀取的block數(shù).
Blk_wrtn/s:每秒寫入的block數(shù).
Blk_read:讀入的block總數(shù).
Blk_wrtn:寫入的block總數(shù).
使用iostat -x 5 查看IO情況:
-x:更詳細(xì)的io設(shè)備統(tǒng)計(jì)信息
| rrqm/s | 每秒對(duì)該設(shè)備的讀請(qǐng)求被合并次數(shù),文件系統(tǒng)會(huì)對(duì)讀取同塊(block)的請(qǐng)求進(jìn)行合并 |
| wrqm/s | 每秒對(duì)該設(shè)備的寫請(qǐng)求被合并次數(shù) |
| r/s | 每秒完成的讀次數(shù) |
| w/s | 每秒完成的寫次數(shù) |
| rkB/s | 每秒讀數(shù)據(jù)量(kB為單位) |
| wkB/s | 每秒寫數(shù)據(jù)量(kB為單位) |
| avgrq-sz | 平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位) |
| avgqu-sz | 平均等待處理的IO請(qǐng)求隊(duì)列長(zhǎng)度 |
| await | 平均每次IO請(qǐng)求等待時(shí)間(包括等待時(shí)間和處理時(shí)間,毫秒為單位) |
| svctm | 平均每次IO請(qǐng)求的處理時(shí)間(毫秒為單位) |
| %util | 采用周期內(nèi)用于IO操作的時(shí)間比率,即IO隊(duì)列非空的時(shí)間比率 |
%util: 一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說(shuō)一秒中有多少時(shí)間 I/O 隊(duì)列是非空的。即 delta(use)/s/1000 (因?yàn)閡se的單位為毫秒)
如果 %util 接近 100%,說(shuō)明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。
四、iotop命令
安裝命令:yum install iotop
查看哪個(gè)線程耗IO比較高、按 o 只顯示有磁盤 IO 活動(dòng)的進(jìn)程。
各個(gè)參數(shù)說(shuō)明:-o, --only只顯示正在產(chǎn)生I/O的進(jìn)程或線程。除了傳參,可以在運(yùn)行過(guò)程中按o生效。-b, --batch非交互模式,一般用來(lái)記錄日志。-n NUM, --iter=NUM設(shè)置監(jiān)測(cè)的次數(shù),默認(rèn)無(wú)限。在非交互模式下很有用。-d SEC, --delay=SEC設(shè)置每次監(jiān)測(cè)的間隔,默認(rèn)1秒,接受非整形數(shù)據(jù)例如1.1。-p PID, --pid=PID指定監(jiān)測(cè)的進(jìn)程/線程。-u USER, --user=USER指定監(jiān)測(cè)某個(gè)用戶產(chǎn)生的I/O。-P, --processes僅顯示進(jìn)程,默認(rèn)iotop顯示所有線程。-a, --accumulated顯示累積的I/O,而不是帶寬。-k, --kilobytes使用kB單位,而不是對(duì)人友好的單位。在非交互模式下,腳本編程有用。-t, --time 加上時(shí)間戳,非交互非模式。-q, --quiet 禁止頭幾行,非交互模式。有三種指定方式。-q 只在第一次監(jiān)測(cè)時(shí)顯示列名-qq 永遠(yuǎn)不顯示列名。-qqq 永遠(yuǎn)不顯示I/O匯總。 交互按鍵:和top命令類似,iotop也支持以下幾個(gè)交互按鍵。left和right方向鍵:改變排序。 r:反向排序。o:切換至選項(xiàng)--only。p:切換至--processes選項(xiàng)。a:切換至--accumulated選項(xiàng)。q:退出。i:改變線程的優(yōu)先級(jí)。五、pt-ioprofile命令
安裝步驟:
1、安裝依賴包:yum install -y perl perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl-Digest-MD5 perl-ExtUtils-MakeMaker
2、下載:wget https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-1.el7.x86_64.rpm
3、安裝rpm包:rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm
使用方法:
pt-ioprofile --profile-pid=1236 --cell=sizes
pt-ioprofile的原理是對(duì)某個(gè)pid附加一個(gè)strace進(jìn)程進(jìn)行IO分析。
對(duì)于定位問(wèn)題更有用的是通過(guò)IO的吞吐量來(lái)進(jìn)行定位。使用參數(shù) --cell=sizes,該參數(shù)將結(jié)果已 B/s 的方式展示出來(lái)
從上圖可以看出IO負(fù)載的主要來(lái)源是jetty。
并且壓力主要集中在讀取上。
六、sar命令
sar -d
- DEV ?磁盤設(shè)備的名稱,如果不加-p,會(huì)顯示dev253-0類似的設(shè)備名稱,因此加上-p顯示的名稱更直接
- tps ?每秒I/O的傳輸總數(shù)
- rd_sec/s ?每秒讀取的扇區(qū)的總數(shù)
- wr_sec/s ?每秒寫入的扇區(qū)的總數(shù)
- avgrq-sz ?平均每次次磁盤I/O操作的數(shù)據(jù)大小(扇區(qū))
- avgqu-sz ?磁盤請(qǐng)求隊(duì)列的平均長(zhǎng)度
- await ?從請(qǐng)求磁盤操作到系統(tǒng)完成處理,每次請(qǐng)求的平均消耗時(shí)間,包括請(qǐng)求隊(duì)列等待時(shí)間,單位是毫秒(1秒等于1000毫秒),等于尋道時(shí)間+隊(duì)列時(shí)間+服務(wù)時(shí)間
- svctm ?I/O的服務(wù)處理時(shí)間,即不包括請(qǐng)求隊(duì)列中的時(shí)間
- %util ?I/O請(qǐng)求占用的CPU百分比,值越高,說(shuō)明I/O越慢
除了查看磁盤外還能查看其他的資源信息:
- 查看CPU使用情況 ?sar -u
- 將統(tǒng)計(jì)結(jié)果保存到文件 sar -o ?& ?sar -f
- 查看平均負(fù)載 ?sar -q
- 查看內(nèi)存使用情況 ?sar -r
- 查看系統(tǒng)swap分區(qū)統(tǒng)計(jì)情況 ?sar -W
- 查看IO和傳遞速率 ?sar -b
- ?統(tǒng)計(jì)網(wǎng)絡(luò)信息 sar -n?
- ?網(wǎng)絡(luò)接口信息 sar -n DEV
- ?網(wǎng)絡(luò)設(shè)備通信失敗信息 sar -n EDVE
- 統(tǒng)計(jì)socket連接信息 ?sar -n SOCK
- ?TCP連接的統(tǒng)計(jì) ?sar -n TCP
七、dstat命令
參考:CentOS下性能監(jiān)測(cè)工具 dstat - 走看看
八、sysstat命令
九、pidstat命令
pidstat -d 1 (每1秒打印一次使用磁盤io的進(jìn)程及io速度)
?ctrl+c后顯示統(tǒng)計(jì)
總結(jié)
以上是生活随笔為你收集整理的linux查看磁盘io使用情况的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 端午节蓝屏之谜:金山系列软件同微软KB2
- 下一篇: linux 其他常用命令