操作系统查看进程占用IO
先用iostat查看磁盘io 是否读写负载很高
用iostat -x 1 10
如果 iostat 没有,要 yum install sysstat安装这个包,第一眼看下图红色圈圈的那个如果%util接近100%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,I/O压力就比较大,读取速度有较多的wait,然后再看其他的参数,
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
方法一:
iotop -oP
命令的含义:只显示有I/O行为的进程
方法二:
pidstat -d 1
命令的含义:展示I/O统计,每秒更新一次
pidstat -d 1
Linux 3.10.0-957.el7.x86_64 (wyl-lab) 05/09/2019 x86_64 (4 CPU)
03:13:15 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:13:16 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:13:17 PM 995 31999 0.00 140.00 140.00 postgres
03:13:17 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:13:18 PM 997 34023 0.00 8.00 0.00 bundle
03:13:18 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:13:19 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
03:13:20 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
c
03:13:21 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
^C
Average: UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
Average: 995 31999 0.00 19.89 19.89 postgres
Average: 997 34023 0.00 1.14 0.00 bundle
测试写
[[email protected] ~]# dd if=/dev/zero of=test bs=8k count=10000 oflag=direct
10000+0 records in
10000+0 records out
81920000 bytes (82 MB) copied, 0.876059 s, 93.5 MB/s
测试读
[[email protected] ~]# dd if=test of=/dev/null bs=8k count=10000 iflag=direct
10000+0 records in
10000+0 records out
81920000 bytes (82 MB) copied, 5.06434 s, 16.2 MB/s