当前位置:   article > 正文

【性能测试】系统常用监控- -磁盘IO_avgrq-sz

avgrq-sz

性能测试系统常用监控- -磁盘



前言

性能测试过程中,在定位和分析问题时通常都需要监控系统资源相关情况。本文主要介绍常用的监控命令和工具,主要包含磁盘IO、网络、CPU和内存,对文件系统和linux内核部分常用概念及分析方法有初步介绍。
在这里插入图片描述


磁盘IO

在性能测试过程中,磁盘IO是重要分析指标项。比如在存储性能测试过程中需要测试不同类型磁盘IO的能力,主要指标是IOPS和OPS。在数据库性能测试过程,又需要尽量避免磁盘IO,使数据库的业务尽量在内存完成,提高性能。

1.常用概念

  • 硬盘类型:机械硬盘(HDD)和固态硬盘(SSD),相较于固态硬盘,机械硬盘需要寻址和寻道。所以固态硬盘能获取更高的IOPS和IO带宽。SSD具有更好的性能,但是数据保存时长不如机械硬盘。
  • 硬盘转速(rpm):机械硬盘通过转动磁头进行寻址,转速越快IOPS越高,常见转速5400/7200/15000rpm,一般存在十几毫秒时延
  • 磁盘接口(SCSI/SAS/ATA/SATA)

2.磁盘IO性能

  1. 内存的性能优于外存
  2. 机械硬盘顺序读写性能优于随机读写(寻道和寻址时间增加)
  3. 数据库常用IO性能调优
    *减少IO次数
    提高缓冲区的命中率,数据有序存放,数据聚集存储
    *减少IO性能
    Direct IO,异步IO,预读

3.性能指标

使用率、IOPS、吞吐量、IOWAIT

4.性能分析

工具或命令:dstat、sariostat、pidstat、iotop、iolatency、blktrace、fio、perf

模块类型度量方法衡量标准
IO使用情况1.iostat –xz,”%util”
2.sar –d,”%util”
3.iotop利用率很高
4.cat /proc/pid/sched
注意>=50%
告警>=70%
严重>=90%
IO满载1. iostat –xnz 1,”avgqu-sz”>1
2. iostat await > 70
IO已经有满载嫌疑
IO错误1. dmesg查看io错误
2. smartctl /dev/sda
有信息

5.常用分析

5. 1 iostat命令解析

iostat -mtx 2 3 #每2秒打印一次共打印3次
在这里插入图片描述

字段说明备注
rrqm/s每秒进行merge的读操作数目
wrqm/s每秒进行merge的写操作数目
r/s每秒完成的读I/O设备次数
w/s每秒完成的写I/O设备次数
rMB/s每秒读MB字节数
wMB/s每秒写MB字节数
avgrq-sz平均每次设备I/O操作数据大小扇区
avgqu-sz平均I/O队列长度扇区
await平均每次设备I/O操作的等待时间毫秒
svctm平均每次设备I/O操作的服务时间毫秒
%util每秒I/O操作百分比,IO使用率

说明:

  • %util:IO的使用率,若接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,可能存在磁盘瓶颈
  • svctm:主要说明磁盘本身读写性能,如tpcc测试一般盘阵服务时间在0.25ms左右,如果太大可能就是磁盘性能问题
  • await:瓶颈每次IO响应时间,一般小于5ms
    1.svctm一般小于await(一般包含了svctm)
    2.若svctm接近await,说明I/O几乎没有等待时间
    3.若await远大于svctm,说明IO队列太长,应用得到响应时间
    4.调优可以考虑调整磁盘IO调度算法
  • avgqu-sz:衡量系统IO负荷指标,若改值一直比较大,说明读写IO请求排队数量较多。和avgrq-sz一起判断IO情况,若avgrq-sz比较大,说明平均每次读写请求的数据量比较多,两者都大则一定是IO问题
  • avgrq-sz:读写请求的数据量,与avgqu-sz一起判断问题。若avgqu-sz排队多,但请求数据小,则IO也会很小;如果请求数据大,IO数据才会高。
  • 使用技巧
    显示指定磁盘信息
    iostat -txdk sda 2 3 #指定磁盘以kB为单位每2秒打印一次共打印3次
    在这里插入图片描述
    查看进程IO分布
    通过pidstat命令快速观察相关进程IO情况
    pidstat -d -l -U USER -p ALL 1 1 |egrep "USER|PID"
    在这里插入图片描述

5.2 查看硬盘类型

cat /sys/block/sda/queue/rotational
在这里插入图片描述

5.3 查看磁盘IO调度

cat /sys/block/sdb/queue/scheduler
在这里插入图片描述
磁盘IO调度默认算法是cfq,linux有四种IO调度算法。在完全随机的访问环境下,CFQ、Deadline和NOOP性能差异很小,但是一旦有大的连续的IO,CFQ可能会造成小IO时延增加。
例如在数据库tpcc性能场景读写比例相当,随机写较多,使用deadline的IO调度算法比较合适,也比较稳定。

  • CFQ:适用于IO大小非常均匀的场景

  • Deadline:适用于小文件读写,跳跃式读写、零散读写,适合读较多业务,复杂OLTP应使用deadline

  • NOOP:适用于SAN场景,随机存取设备,IO性能不是瓶颈时也可以使用

  • Anticipatory:适用于大文件读写,整块式,重复读写(web server),文件服务器ftp/samba,不适合数据库场景

5.4 查看磁盘IO调度

DD写读10GB文件:
写:dd if=/dev/zero of=/data/test/file22 bs=1G count=10 oflag=direct
读:dd of=/dev/null if=/data/test/file22 bs=1G count=10 oflag=direct
在这里插入图片描述

参数说明:
if:从何处读数据
of:写入何处
bs:数据块大小
oflag=direct:跳过缓存

5.3 调优方法

系统调用、I/O资源控制、充分利用缓存、RAID(独立磁盘冗余阵列)、I/O隔离

5.1 RAID
  • RAID技术
    RAID(Redundant Array of Independent Disks):独立磁盘冗余阵列,通常简称为磁盘阵列。RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余技术。
    RAID0:可靠性低,速度快,无数据校验的数据条带化技术,空间利用率100%。 – POC常用手段
    RAID1:可靠性高,速度慢,镜像化条带数据,空间利用率50%。–可靠性要求
    RAID5:兼顾性能、安全和存储成本,是RAID0和RAID1折中方案,分布奇偶校验条带,利用率为(n-1)/n –生成系统常见RAID
    在这里插入图片描述

总结

以上是性能测试过程中磁盘监控常用命令和常用概念,后续会持续补充磁盘IO性能调优常用方法和案例。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/608904
推荐阅读
相关标签
  

闽ICP备14008679号