性能测试-磁盘-磁盘问题场景分析
1、磁盘命令 iostat -dx 2 10-查看磁盘读写的扩展数据,2s采集一次,采集10次
安装命令
yum install sysstat -y
iostat -dx 2 10-查看磁盘读写的扩展数据,2s采集一次,采集10次
#查看磁盘读写的扩展数据,2s采集一次,采集10次 # -d 磁盘 x扩展 ,io读写 iostat -dx 2 10
- rrqm/s:每秒进行merge的读操作数目,即delta(rmerge)/s
- wrqm/s:每秒进行merge的写操作数目 即 delta(wmerge)/s
- r/s:每秒完成的读l/0设备次数 即delta(rio)/s
- w/s:每秒完成的写I/设备次数
- rsec/s:每秒读扇区数
- wsec/s: 每秒写扇区数
- rkB/s:每秒读k字节数
- wkB/s:每秒写k字节数
- avgrq-sz: 平均每次设备 I/0 操作的数据大小(扇区)delta(rsect + wsect)/delta
- avgqu-sz:平均I/O队列长度, delta(aveq)/s/1000
- await:平均每次设备 1/0 操作的等待时间(毫秒) delta(ruse+wuse)/delta(rio+wio)
- svctm:平均每次设备I/0 操作的服务时间(毫秒)delta(use)/delta(rio+wio)
- r_await:读请求等待时间
- w_await:写请求等待时间
- %util秒有百分之多少的时间用于I/O操作,或一秒钟有多少I/O队列是非空
磁盘常用命令 du -sh 和df -h
[root@centos7 data]# du -sh 28M . [root@centos7 data]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 484M 0 484M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 7.1M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/mapper/centos-root 47G 3.1G 44G 7% / /dev/sda1 1014M 150M 865M 15% /boot tmpfs 100M 0 100M 0% /run/user/0
2、磁盘性能指标
- 使用率:指磁盘处理I/O的时间百分比
- 饱和度:磁盘处理I/0的繁忙程度
- IOPS:inputoutput per second 每秒的I/O请求
- 吞吐量:每秒的I/O请求大小
- 响应时间: 指I/O请求从发出到收到响应的时间间隔
3、清除缓存命令
echo 3 > /proc/sys/vm/drop_caches
# 1、清理缓存: echo 3 > /proc/sys/vm/drop_caches echo 1 > /proc/sys/ym/drop_caches释放页缓存 echo 2 > /proc/sys/ym/drop_caches释放目录项 echo 3 > /proc/sys/ym/drop_caches释放页缓存、目录项、节点 #执行完后,buff会为0,cache会减少,free增大
4、测试磁盘写速度步骤-跑多次
- 1、先清空缓存: echo 3 >/proc/sys/vm/drop_caches
- 2、写操作: dd if=/dev/zero of=$PWD/optfile bs=20MB count=100
-
- if输入文件in file), of 输出文件(out file)
- /dev/zero 一个伪设备,只产生字符流,不会有IO
- of=$PWD/outfile 输出到当前目录下的outfile文件中
- bs=20MB count=100块文件20MB,执行100次
- time dd if=/dev/zero of=$PWD/outfile bs=20MB count=100
- 带有时间统计
- 3、vmstat 1 cache增大, bo有明显数据,in也有明显数据变化
- 4、iostat -dx 1 wkB/s有非常大的数据, await也有数
我现在磁盘的写速度大概时678MB/s
5、测试磁盘的读速度
1、先清空缓存 `echo 3 >/proc/sys/vm/drop_caches`
2、写操作: `dd if=/dev/sda of=/dev/null bs=20MB count=100`
-
- /dev/sda磁盘第1个物理分区,读取这个磁盘文件,会有IO
- dev/null个伪设置,回收站,是个无底洞,可以无限放数据
- bs=20MB count=100 块文件20MB,执行100次
- time dd if=/dev/sda of=/dev/null bs=20MB count=100
- 带有时间统计
3、`vmstat 1` buff 有明显的数据,cache有数据变化,但是不明显, bi有明显的数据
4、`iostat -dx 1` rKB/s有明显的数据,await有,但是不是很大
6、测试内存的速度
1、先清空缓存 `echo 3 >/proc/sys/vm/drop_caches`
2、脚本: `dd if=/dev/zero of=/dev/null bs=10MB count=1000` 输入文件是一个空文件,输出丢到无底洞,所以没有磁盘操作,就内存,测试的就是内存的数据了
结论: 磁盘的读写速度,几百MB/s 内存 几GB/s 内存速度比磁盘快很多。
写操作时,cache增大, bo有明显数据,free变小,buff数据不变,r/s没有数据,w/s数据变大,rkB/s没有数据,wrB/s数据变大
读数据时,buff增大, bi有明显数据