Linux磁盘性能分析

小柒博客 1 72,7382字数 820阅读2分44秒阅读模式

读写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

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

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

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

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

[root@localhost ~]# pidstat -d 1

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

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

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

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

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
公众号已复制
Linux最后更新:2024-1-24
小柒博客
  • 本文由 小柒博客 发表于 2018年11月12日 17:09:17
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/1579.html
    • 运维老司机
      运维老司机 6

      亲测,写的不错,感谢博主 :razz:

    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    拖动滑块以完成验证