Linux磁盘性能分析

读写IO(Read/Write IO)操作

磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读IO操作。

单个IO操作

当控制磁盘的控制器接到操作系统的读IO操作指令的时候,控制器就会给磁盘发出一个读数据的指令,并同时将要读取的数据块的地址传递给磁盘,然后磁盘会将读取到的数据传给控制器,并由控制器返回给操作系统,完成一个读IO的操作;同样的,一个写IO的操作也类似,控制器接到写的IO操作的指令和要写入的数据,并将其传递给磁盘,磁盘在数据写入完成之后将操作结果传递回控制器,再由控制器返回给操作系统,完成一个写IO的操作。单个IO操作指的就是完成一个写IO或者是读IO的操作。

随机访问(Random Access)与连续访问(Sequential Access)

随机访问指的是本次IO所给出的扇区地址和上次IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据。相反的,如果当次IO给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO操作,这样的多个IO操作称为连续访问。因此尽管相邻的两次IO操作在同一时刻发出,但如果它们的请求的扇区地址相差很大的话也只能称为随机访问,而非连续访问。

顺序IO模式(Queue Mode)/并发IO模式(Burst Mode)

磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO命令时称为顺序IO;当磁盘组能同时执行多个IO命令时,称为并发IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令。

1、TOP命令查看CPU是否长时间等待IO

[root@localhost ~]# top

Linux磁盘性能分析

%wa超过30%,说明IO压力很大

2、iostat命令查看磁盘工作时长占比

[root@localhost ~]# iostat -x 1            //1表示1秒刷新一次

Linux磁盘性能分析

3、pidstat命令查看当前进行IO的进程

[root@localhost ~]# pidstat -d 1

Linux磁盘性能分析

4、dd测试磁盘的读写速度

[root@localhost ~]# time dd if=/dev/vdb1 of=/dev/null bs=8k count=30000

[root@localhost ~]# time dd if=/dev/zero of=test.txt bs=8k count=300000

Linux磁盘性能分析

time命令用于输出整条语句的执行所花费的时间(real/user/sys那部份是time的输出)。

/dev/zero也是一个模拟设备用于产生空字节并不真正进行IO,所以第一条命令相当天测试当前文件夹对应的磁盘的写入性能(711MB/s)。

/dev/null是一个模拟设备并不真正进行IO,所以第二条相当于测试/dev/vdb1的读取性能(150MB/s)。

给TA打赏
共{{data.count}}人
人已打赏
运维

Linux部署Nginx+Keepalived高可用集群

2023-11-21 16:26:46

运维

Linux性能分析工具vmstat

2023-11-21 16:28:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索