当前位置:网站首页 > 技术博客 > 正文

linux iocp



一 前言

最近做数据库服务器的压测,观察数据库性能,同时也要关注磁盘的io具体表现。分析数据时会用到2个工具 iostat,本文重新温习一下该工具的用法。

二 iostat

在排查分析io问题时,可以使用iostat查看磁盘的IO性能状态数据。

2.1 参数介绍

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

常用参数

2.2 输出解释

常使用命令

iostat -kx 1

这里重点说一下 await ,svctm

关于 await和svctm

可以理解为IO请求的响应时间,包括队列等待时间和服务时间,我们分析IO问题时,如果await大于svctm,await-svctm差值越小,则说明队列时间越短, 反之差值越大,队列时间越长,说明磁盘io有性能问题。

需要注意到是

man 手册里面有注释 Warning! Do not trust this field any more. This field will be removed in a future sysstat version. 该参数的计算方式依赖 util,而util其实不一定准确。因为util的计算方式未考虑并行处理io请求。详细的介绍请参考 《辩证看待 iostat》

2.3 常用命令

每隔2秒,显示一次设备统计信息, 可以看到全部设备的tps.

iostat -d -k 1

查看指定设备 sdb磁盘的io统计信息,每秒展示一次输出。

iostat -xk sdb 1

2.4 await多大才算有问题

如前面介绍所说,await是单个I/O所消耗的时间,包括硬盘设备处理I/O的时间和I/O请求在kernel队列中等待的时间,正常情况下队列等待时间可以忽略不计,姑且把await当作衡量硬盘速度的指标吧,那么多大算是正常呢?对于SSD,从0.0x毫秒到1.x毫秒不等。在以下实例中,sdb是10块960G SSD做raid5,await是0.36毫秒,符合预期。

对磁盘阵列来说,因为有硬件缓存,写操作不等落盘就算完成,所以写操作的service time大大加快了,如果磁盘阵列的写操作不在一两个毫秒以内就算慢的了;读操作则未必,不在缓存中的数据仍然需要读取物理硬盘,单个小数据块的读取速度跟单盘差不多。

总结

虽然说iostat输出中 util 和srctm不一定准确,我们依然可以借助await 和 avgqu-sz的值合理的分析磁盘的io情况。然后结合系统的配置比如raid 卡,磁盘IO调度策略逐步分析。

推荐阅读

容易被误读的IOSTAT

辩证看待 iostat

版权声明


相关文章:

  • 数字图像处理实验报告总结2024-11-30 09:30:04
  • eof函数用法2024-11-30 09:30:04
  • 溢出显示2024-11-30 09:30:04
  • qt qfile写文件2024-11-30 09:30:04
  • 网络攻防演练总结报告2024-11-30 09:30:04
  • java在线编程工具2024-11-30 09:30:04
  • 移位指令应用实例2024-11-30 09:30:04
  • chroot原理深入剖析2024-11-30 09:30:04
  • 线程死锁的四个必要条件2024-11-30 09:30:04
  • vs2015未定义标识符2024-11-30 09:30:04