性能测试系统常用监控- -磁盘
文章目录
- 性能测试系统常用监控- -磁盘
- 前言
- 磁盘IO
- 1.常用概念
- 2.磁盘IO性能
- 3.性能指标
- 4.性能分析
- 5.常用分析
- 5. 1 iostat命令解析
- 5.2 查看硬盘类型
- 5.3 查看磁盘IO调度
- 5.4 查看磁盘IO调度
- 5.3 调优方法
- 5.1 RAID
- 总结
前言
性能测试过程中,在定位和分析问题时通常都需要监控系统资源相关情况。本文主要介绍常用的监控命令和工具,主要包含磁盘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性能
- 内存的性能优于外存
- 机械硬盘顺序读写性能优于随机读写(寻道和寻址时间增加)
- 数据库常用IO性能调优
*减少IO次数
提高缓冲区的命中率,数据有序存放,数据聚集存储
*减少IO性能
Direct IO,异步IO,预读
3.性能指标
使用率、IOPS、吞吐量、IOWAIT
4.性能分析
工具或命令:dstat、sar、iostat、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性能调优常用方法和案例。