Fork me on GitHub

【性能测试】-磁盘问题场景分析

目录

  • 1、磁盘命令 iostat -dx 2 10-查看磁盘读写的扩展数据,2s采集一次,采集10次
  • 2、磁盘性能指标
  • 3、清除缓存命令
  •  4、测试磁盘写速度步骤-跑多次
  •  5、测试磁盘的读速度

正文

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增大
复制代码

在上面的输出中,每一列的含义如下:
procs:表示当前系统的进程数量。
r:表示运行中的进程数量。
b:表示阻塞的进程数量。
swpd:表示交换分区已使用的大小。
free:表示内存空闲的数量。
buff:表示缓冲区的大小。
cache:表示缓存区的大小。
si:表示系统中断次数。
so:表示软件中断次数。
bi:表示块设备 I/O 的读操作次数。
bo:表示块设备 I/O 的写操作次数。
in:表示设备 I/O 的读操作次数。
cs:表示设备 I/O 的写操作次数。
us:表示用户进程使用的 CPU 时间。
sy:表示系统进程使用的 CPU 时间。
id:表示空闲 CPU 时间。
wa:表示等待 CPU 时间的进程数量。
st:表示被抢占的 CPU 时间。

 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有明显数据

 

posted @ 2023-08-27 22:38  橘子偏爱橙子  阅读(73)  评论(0编辑  收藏  举报