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

article/2025/11/5 20:16:39

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


文章目录

  • 性能测试系统常用监控- -磁盘
  • 前言
  • 磁盘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性能

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


http://chatgpt.dhexx.cn/article/1GUIBRnR.shtml

相关文章

磁盘IO

基本概念: 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,个人认为对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不…

磁盘IO及性能指标

一、磁盘 I/O 的概念 I/O 的概念,从字义来理解就是输入输出。操作系统从上层到底层,各个层次之间均存在 I/O。比如,CPU 有 I/O,内存有 I/O, VMM 有 I/O, 底层磁盘上也有 I/O,这是广义上的 I/O。通常来讲,一个上层的 I/O 可能会产生针对磁盘的多个 I/O,也就是说,上层的 …

一提到mysql,总有人说磁盘IO,到底什么是磁盘IO?

为什么mysql的innodb存储引擎选择了B树,这个和磁盘的特性有着非常大的关系。 我们先来看下磁盘上的物理结构。 如果我们简化一下,可以这么看 再看几张模型图 一个磁盘由大小相同且同轴的圆形盘片组成,磁盘可以转动,各个磁盘必须同…

一寸照像素和厘米的关系及换算

一寸照的概念: 照片的一寸和二寸是指照片的边长度,而不是对角线。 这里的寸指的是英寸 厘米和英寸: 1 厘米=0.3937 英寸 1 英寸=2.54 厘米 一寸照的厘米概念: 一寸照规格是宽*高2.5cm*3.5cm ,换…

CSS像素单位

一、px 整个屏幕的一个像素点。 二、em单位 1em:16px浏览器的默认值1em 基准值(16px)* number(1) 16px2em 基准值(16px)* number(2) 32px 当默认值改了&#xff0c…

python 找出矩阵中非零数

转载于:https://www.cnblogs.com/fuhang/p/9185840.html

可逆矩阵的概念 逆矩阵的求解方法总结

可逆矩阵的概念:设A是一个n阶矩阵,如果存在n阶矩阵B,使得ABBAE,则称矩阵A为可逆矩阵,且B称为A的逆矩阵。 逆矩阵的求解方法总结: 1.待定系数法 利用定义进行求解,设A是一个n阶矩阵,如…

直观理解:为什么A为 n 阶满秩方阵时,Ax=0 只有零解?

本篇博客仅记录一下我个人思考的一点想法,方便以后回顾。并不严谨,希望给大家提供一点直观的理解。 通过上边的变形,我们可以看出 A x Ax Ax的本意就是用 x [ x 1 x 2 . . . x n ] x[x_{1} x_{2} ... x_{n}] x[x1​x2​...xn​]作为系数对 A…

【矩阵论笔记】矩阵特征矩阵的行列式因子、不变因子、初等因子

矩阵的特征值矩阵是由矩阵特征值 λ \lambda λ构成的矩阵。包含三个运算: 1、互换两行(列) 2、某行(列)乘非零常数 3、某行(列)乘多项式后加到另一行 n阶 λ \lambda λ矩阵可逆的充要条件是&a…

matlab求矩阵的非,matlab矩阵非零个数 Matlab如何提取非零元素

matlab 如何把一个矩阵中的非零数取出组成一行 >> A=randi([0 4],4) A = 4 2 1 0 2 3 2 3 0 4 0 2 0 3 0 0 >> B=nonzeros(A) B = 4 2 2 3 4 3 1 2 3 2 matlab中怎么求数组中非零元素的个数 matlab中求矩阵中非零元素的均值怎么求啊? 代码: a(a==0)=NaN; mean(a,…

【随心所记】矩阵A的行列式不等于0,是A可逆的充要条件吗?答:是这样的

题目 解析 注意,谈到 可逆矩阵 A,那么A一定是 方阵 哈!!!即 n行n列。

Matlab与线性代数 -- 寻找矩阵的非零元素

本微信图文详细介绍了Matlab中find函数的用法。

numpy 求矩阵非零元素的均值

假如我们有一个矩阵A,想要求其中的非零元素的均值,计算方式是: 直接用mean来求的话,分母是所有元素的个数,不符合我们的要求。 在matlab中,这样做: mean(AA(AA~0))numpy: import …

零矩阵题解

题目 编写一种算法,若M N矩阵中某个元素为0,则将其所在的行与列清零。 示例 1: 输入: [[1,1,1],[1,0,1],[1,1,1] ] 输出: [[1,0,1],[0,0,0],[1,0,1] ]示例 2: 输入: [[0,1,2,0],[3,4,5,2],[…

零矩阵00

题目链接 零矩阵 题目描述 注意 无 解答思路 用另外两个数组分别保存对应的行和列是否出现了0,后续在填充元素时则根据这两个数组中对应的值确定是否填0 代码 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0…

矩阵零空间

矩阵A的零空间就Ax0的解的集合。 零空间的求法:对矩阵A进行消元求得主变量和自由变量;给自由变量赋值得到特解;对特解进行线性组合得到零空间。 假设矩阵如下: 对矩阵A进行高斯消元得到上三角矩阵U,继续化简得到最简…

从0了解矩阵——矩阵的本质

矩阵是大学线性代数课程里的内容,当时学的时候虽然一头雾水,不过,牵扯到的问题基本上都是一些加减乘除,所以,我的线性代数课程倒是拿了不错的成绩。虽然分数考得不错,但是,直到毕业后很多年&…

matlab中换行操作

在写matlab程序时,如果一行代码太长,不利于可读性和美观,那么我们可以使用三个点号(...)来实现换行。 示例如下: 我想打印一个字符a,正常写fprintf(%s\n,a ),是没有问题的 fprint…

matlab中.mat文件用法

保存数据 在工作区右击“新建”,输入变量名双击变量,将excel数据复制到窗口关闭窗口,右击另存为,以“.mat”为后缀进行保存 导入数据 双击文件区域mat文件即可完成导入 注: 导入的变量与保存时的变量一致&#…

Matlab中table类型使用技巧

在处理一些较复杂的表格数据时,直接导入为数组并不方便处理,这时候需要使用table类型数据来更好的存储和处理数据。 例如,在处理某实验数据时,将excel直接导入至matlab中的table数据类型,读取代码为: data …