性能测试指标分析-磁盘I/O

分析思路:

1)top查看系统整体情况

2)使用iostat发现磁盘I/O性能瓶颈

3)再借助pidstat,定位出导致瓶颈的进程,分析进程I/O行为

4)最后结合应用程序的原理,分析这些I/O来源

一、top:首先通过top,查看磁盘IO

输入top命令后,如下所示(如想要退出top命令界面, 按ctrl+c)

性能测试指标分析-磁盘I/O

通过查看CPU的wa%值来判断当前磁盘IO性能,如果这个数值过大,很可能是磁盘IO太高了,需要通过iostat进一步分析;

也可能是前他原因如 网络IO过高等;

二、iostat:查看磁盘IO是否存在瓶颈

参数不同导致命令稍有区别,常用的命令有:iostat -k  1  2   |   iostat -c -x  

性能测试指标分析-磁盘I/O

1)iowait与top的wa类似,如果这个值高,就意味着磁盘缓慢或负载过大;考虑CPU或磁盘问题;

2)%util = 所有处理IO的时间(在统计时间内)/ 总共统计时间;--衡量IO的繁忙程度

所以该参数暗示了设备的繁忙程度 。一般地,如果该参数是100%表示IO请求太多,设备已经接近满负荷运行了,该磁盘可能存在瓶颈。可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)

3)await:平均每次设备IO操作的等待时间(ms);--衡量IO的响应速度;svctm:平均每次设备IO操作的服务时间(ms);

如果await的值远高于svctm的值,则表示IO队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘或者升级CPU来解决问题;(上图也许就符合await远大于svctm的情况,但是此时iowait为0,且此时未压测,服务器性能可说是非常非常好哒,所以这个值怎么看存疑

ps:上述存在一种特殊情况,iowait比较高,idle也比较高,此时有可能CPU在等待分配内存,瓶颈在内存,此时应加大内存;

三、iotop 或pidstat(未深入分析,不理解

如果磁盘瓶颈可以通过pidstat -d 或 iotop来定位IO高的进程

性能测试指标分析-磁盘I/O

性能测试指标分析-磁盘I/O

 

附:iostat命令解释

性能测试指标分析-磁盘I/O

性能测试指标分析-磁盘I/O

 

附:内存与磁盘I/O关系

当内存不足时,频繁的内存交换导致swap较高,进而导致内核线程IO较高。