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



文章目录

  • 性能测试系统常用监控- -磁盘
  • 前言
  • 磁盘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内核部分常用概念及分析方法有初步介绍。

centeos 磁盘监控 硬盘监控系统_服务器


磁盘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次

centeos 磁盘监控 硬盘监控系统_服务器_02

字段

说明

备注

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次
  • centeos 磁盘监控 硬盘监控系统_运维_03

  • 查看进程IO分布
    通过pidstat命令快速观察相关进程IO情况
    pidstat -d -l -U USER -p ALL 1 1 |egrep "USER|PID"
  • centeos 磁盘监控 硬盘监控系统_ios_04


5.2 查看硬盘类型

cat /sys/block/sda/queue/rotational

centeos 磁盘监控 硬盘监控系统_ios_05

5.3 查看磁盘IO调度

cat /sys/block/sdb/queue/scheduler

centeos 磁盘监控 硬盘监控系统_服务器_06


磁盘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

centeos 磁盘监控 硬盘监控系统_centeos 磁盘监控_07

参数说明:
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性能调优常用方法和案例。