性能测试指标分析-磁盘I/O
分析思路:
1)top查看系统整体情况
2)使用iostat发现磁盘I/O性能瓶颈
3)再借助pidstat,定位出导致瓶颈的进程,分析进程I/O行为
4)最后结合应用程序的原理,分析这些I/O来源
一、top:首先通过top,查看磁盘IO
输入top命令后,如下所示(如想要退出top命令界面, 按ctrl+c)
通过查看CPU的wa%值来判断当前磁盘IO性能,如果这个数值过大,很可能是磁盘IO太高了,需要通过iostat进一步分析;
也可能是前他原因如 网络IO过高等;
二、iostat:查看磁盘IO是否存在瓶颈
参数不同导致命令稍有区别,常用的命令有:iostat -k 1 2 | iostat -c -x
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高的进程
附:iostat命令解释
附:内存与磁盘I/O关系
当内存不足时,频繁的内存交换导致swap较高,进而导致内核线程IO较高。