linux查看磁盘io使用情况

article/2025/11/5 20:28:21

六种方法

  top命令、vmstat命令、iostat命令、iotop命令、pt-ioprofile命令、pidstat命令

一、 top命令

top - 11:41:22 up 51 min, 2 users, load average: 0.01, 0.04, 0.01
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.2%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4151760k total, 2284628k used, 1867132k free, 47892k buffers
Swap: 4192956k total, 0k used, 4192956k free, 2145020k cached
分析:查看0.4%wa这里,IO等待所占用的CPU时间的百分比,高过30%时IO压力高

具体的解释如下:
  Tasks: 130 total 进程总数
  1 running 正在运行的进程数
  129 sleeping 睡眠的进程数
  0 stopped 停止的进程数
  0 zombie 僵尸进程数
  Cpu(s):
  0.2% us 用户空间占用CPU百分比
  0.1% sy 内核空间占用CPU百分比
  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
  99.2% id 空闲CPU百分比
  0.4% wa 等待输入输出的CPU时间百分比
  0.0% hi
  0.0% si
  0.4% wa 的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多

二、vmstat命令

命令:vmstat 2 5(每两秒执行一次,执行5次)

vmstat参数解释:
  Procs
       r: 等待运行的进程数
            b: 处在非中断睡眠状态的进程数
  Memory
      swpd: 虚拟内存使用情况,单位:KB
      free: 空闲的内存,单位KB
      buff: 被用来做为缓存的内存数,单位:KB
  Swap
      si: 从磁盘交换到内存的交换页数量,单位:KB/秒
      so: 从内存交换到磁盘的交换页数量,单位:KB/秒
  IO
      bi: 发送到块设备的块数,单位:块/秒
      bo: 从块设备接收到的块数,单位:块/秒
  System
      in: 每秒的中断数,包括时钟中断
      cs: 每秒的环境(上下文)切换次数
  CPU(按 CPU 的总使用百分比来显示)
      us: CPU 使用时间
      sy: CPU 系统使用时间
      id: 闲置时间

三、iostat 使用

安装命令: yum install sysstat 

使用iostat -d -k 2 查看IO情况:

-k:已kb为单位显示读写信息

-m:已mb为单位显示读写信息

device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.

使用iostat -x 5 查看IO情况:

-x:更详细的io设备统计信息

选项说明
rrqm/s每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s每秒对该设备的写请求被合并次数
r/s每秒完成的读次数
w/s每秒完成的写次数
rkB/s每秒读数据量(kB为单位)
wkB/s每秒写数据量(kB为单位)
avgrq-sz平均每次IO操作的数据量(扇区数为单位)
avgqu-sz平均等待处理的IO请求队列长度
await平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm平均每次IO请求的处理时间(毫秒为单位)
%util采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

四、iotop命令

安装命令:yum install iotop

查看哪个线程耗IO比较高、按 o 只显示有磁盘 IO 活动的进程。

各个参数说明:-o, --only只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。-b, --batch非交互模式,一般用来记录日志。-n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用。-d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1。-p PID, --pid=PID指定监测的进程/线程。-u USER, --user=USER指定监测某个用户产生的I/O。-P, --processes仅显示进程,默认iotop显示所有线程。-a, --accumulated显示累积的I/O,而不是带宽。-k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。-t, --time 加上时间戳,非交互非模式。-q, --quiet 禁止头几行,非交互模式。有三种指定方式。-q 只在第一次监测时显示列名-qq 永远不显示列名。-qqq 永远不显示I/O汇总。
交互按键:和top命令类似,iotop也支持以下几个交互按键。left和right方向键:改变排序。  r:反向排序。o:切换至选项--only。p:切换至--processes选项。a:切换至--accumulated选项。q:退出。i:改变线程的优先级。

五、pt-ioprofile命令

安装步骤:

1、安装依赖包:yum install -y perl perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl-Digest-MD5 perl-ExtUtils-MakeMaker
2、下载:wget https://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-1.el7.x86_64.rpm

3、安装rpm包:rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm

使用方法:

pt-ioprofile --profile-pid=1236 --cell=sizes

pt-ioprofile的原理是对某个pid附加一个strace进程进行IO分析。

对于定位问题更有用的是通过IO的吞吐量来进行定位。使用参数 --cell=sizes,该参数将结果已 B/s 的方式展示出来

从上图可以看出IO负载的主要来源是jetty。

并且压力主要集中在读取上。

六、sar命令

sar -d

  • DEV  磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
  • tps  每秒I/O的传输总数
  • rd_sec/s  每秒读取的扇区的总数
  • wr_sec/s  每秒写入的扇区的总数
  • avgrq-sz  平均每次次磁盘I/O操作的数据大小(扇区)
  • avgqu-sz  磁盘请求队列的平均长度
  • await  从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
  • svctm  I/O的服务处理时间,即不包括请求队列中的时间
  • %util  I/O请求占用的CPU百分比,值越高,说明I/O越慢

除了查看磁盘外还能查看其他的资源信息:

  • 查看CPU使用情况  sar -u
  • 将统计结果保存到文件 sar -o  &  sar -f
  • 查看平均负载  sar -q
  • 查看内存使用情况  sar -r
  • 查看系统swap分区统计情况  sar -W
  • 查看IO和传递速率  sar -b
  •  统计网络信息 sar -n 
  •  网络接口信息 sar -n DEV
  •  网络设备通信失败信息 sar -n EDVE
  • 统计socket连接信息  sar -n SOCK
  •  TCP连接的统计  sar -n TCP

七、dstat命令

参考:CentOS下性能监测工具 dstat - 走看看

八、sysstat命令

九、pidstat命令

pidstat -d 1 (每1秒打印一次使用磁盘io的进程及io速度)

 ctrl+c后显示统计


http://chatgpt.dhexx.cn/article/DHpGjr0S.shtml

相关文章

从磁盘看 IO

计算机上的易失和非易失存储器 常见磁盘可以分为两类:机械磁盘和固态磁盘。 第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。机械磁 盘主要由盘片和读写磁头组成,数据就…

硬盘io性能分析

一、磁盘性能主要经常会看磁盘i/o使用率、iops、吞吐量、i/o响应时间等,常用命令sar、iostat、dstat : 1、常用命令:iostat -xm 1 ,单位MB,表示每1秒刷新一次 ----------------- avg-cpu ---------------- %user&…

磁盘IO 基本常识

更多内容,前往 IT-BLOG 计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的 CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同…

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

性能测试系统常用监控- -磁盘 文章目录 性能测试系统常用监控- -磁盘前言磁盘IO1.常用概念2.磁盘IO性能3.性能指标4.性能分析5.常用分析5. 1 iostat命令解析5.2 查看硬盘类型5.3 查看磁盘IO调度5.4 查看磁盘IO调度5.3 调优方法5.1 RAID 总结 前言 性能测试过程中,在…

磁盘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,继续化简得到最简…