linux 磁盘io监控

article/2025/11/5 19:02:45

我们在线上linux服务器排查问题时,一般会通过top、free、netstat、df -h等命令排查cpu、内存、网络和磁盘等问题。有的时候我们需要更进一步了解磁盘io的使用情况,那么本文就是重点讲解一下如何查看linux的磁盘io信息的。

一、iostat:

安装:

yum install sysstat

1、基本用法:

$iostat -d -k 1 10

1)参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

2)含义:

  • tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
  • kB_read/s:每秒从设备(drive expressed)读取的数据量;
  • kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
  • kB_read:读取的总数据量;
  • kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS是39.29,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)

3)指定监控的设备名称为sda:

iostat -d sda 2

2、-x 参数:

1)使用-x参数我们可以获得更多统计信息。

2)含义:

  • rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
  • wrqm/s:每秒这个设备相关的写入请求有多少被Merge了;
  • rsec/s:每秒读取的扇区数;
  • wsec/:每秒写入的扇区数。
  • rKB/s:The number of read requests that were issued to the device per second;
  • wKB/s:The number of write requests that were issued to the device per second;
  • avgrq-sz 平均请求扇区的大小
  • avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。    
  • await:  每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
  • svctm    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,         系统上运行的应用程序将变慢。
  • %util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。

一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

3、-c参数:

iostat还可以用来获取cpu部分状态值:

iostat -c 1 10
avg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67

4、常用方法:

iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盘读写速度单位为KB)
iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)
iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

实例:

iostat -d -x -k 1
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。

ostat -d -k 1 |grep sda10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda10            60.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136

上面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。

二、iotop:

1、iotop是一个用python编写的类似top界面的磁盘I/O监控工具。可以通过yum install iotop安装,运行该命令后如图:

  • DISK READ和DISK WRITE字段代表块设备在采样时间内的I/O带宽;
  • SWAPIN和IO字段表示当前进程或线程花费在页面换入和等待I/O的时间;
  • PRIO字段表示I/O优先级;
  • Total DISK READ和Total DISK WRITE表示总的I/O读写情况

2、常用参数:

-o --only 只显示实际具有I/O操作的进程或线程。可以通过快捷键o进行控制
-b --batch 非交互式模式,可以用于保存输出结果
-n 刷新次数
-d 刷新间隔时间
-P 只显示进程,不显示线程
-p 监控指定进程或线程
-k 使用KB表示I/O带宽。默认情况下,iotop使用B/s,K/s,M/s表示I/O带宽。
-u 监控指定用户的I/O操作情况
-t 在每行输出加上时间戳
-q 只在第一次输出时显示列名称
-qq 不显示列名称
-qqq 不显示总的I/O信息

$ sudo iotop -b -d 1 -n 5  -o  -u mongod -P  -p 1524  -qqq1524 be/4 mongod      0.00 B/s  527.27 K/s  0.00 %  0.54 % mongod -f /etc/mongod.conf1524 be/4 mongod      0.00 B/s  566.84 K/s  0.00 %  1.40 % mongod -f /etc/mongod.conf1524 be/4 mongod      0.00 B/s  766.42 K/s  0.00 %  0.70 % mongod -f /etc/mongod.conf1524 be/4 mongod      0.00 B/s  946.21 K/s  0.00 %  0.37 % mongod -f /etc/mongod.conf


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

相关文章

网络IO与磁盘IO

目录 一.了解IO IO流的分类 IO流的数据来源 1.网络 2.磁盘 3.内存 4.键盘 IO流的原理 二.字节流 1.read方法加缓存数组 2.字节流解决乱码问题 3.缓冲字节流 5.序列化和反序列化 三.字符流 四.网络IO 1.Socket和ServerSocket 2.基于Socket手写实现RPC框架 五.…

网络IO和磁盘IO详解

1. 缓存IO 缓存I/O又被称作标准I/O&#xff0c;大多数文件系统的默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中&#xff0c;数据先从磁盘复制到内核空间的缓冲区&#xff0c;然后从内核空间缓冲区复制到应用程序的地址空间。 读操作&#xff1a;操作系统检查内核的缓冲区有没…

linux系统资源分析 - 磁盘IO篇

目录 一、理解磁盘IO 二、普通文件IO调度 三、磁盘阵列 四、常用命令 4.1 iostat命令详解 五、综合案例(内存&IO) 一、理解磁盘IO 以超市结账为例&#xff0c;来理解磁盘IO的队列情况(结账付款时间 等待时间 服务时间) 交款总人数(排队的人数多&#xff0c;处理慢…

网络I/O与磁盘I/O

目录 一、同步&异步 阻塞&非阻塞二、网络I/O1. BIO2. NIO3. 多路复用器3.1 select & poll3.2 epoll3.3 Redis的IO多路复用 4. Reactor模型5. Netty 三、磁盘I/O1. 缓存I/O2. Direct I/O3. mmap4. write、flush、fsync 一、同步&异步 阻塞&非阻塞 参考&…

Linux 查看磁盘IO的使用

我们在线上linux服务器排查问题时&#xff0c;一般会通过top、free、netstat、df -h等命令排查cpu、内存、网络和磁盘等问题。有的时候我们需要更进一步了解磁盘io的使用情况&#xff0c;那么本文就是重点讲解一下如何查看linux的磁盘io信息的。 1.iostat&#xff1a; 1.1 命…

磁盘IO和网络IO

4、IO访问方式 4.1 磁盘IO 具体步骤&#xff1a; 当应用程序调用read接口时&#xff0c;操作系统检查内核缓冲区中是否存在需要的数据&#xff0c;如果存在&#xff0c;就直接从内核缓存中直接返回&#xff0c;否则从磁盘中读取&#xff0c;然后缓存至操作系统的缓存中。 当应…

内存与IO,磁盘IO,网络IO

本节主要内容&#xff1a; 系统IO原理&#xff1a;Linux VFS FD pagecache [java] 1文件系统的io 2内存和io关系 3网络io 任何程序都有 0&#xff1a;标准输入 1&#xff1a;标准输出 2&#xff1a;报错输出 /proc/$$进入当前进程目录 $$表示当前bash的pid $BA…

关于 IO、存储、硬盘和文件系统

关于IO、存储、硬盘和文件系统 0.引入1.了解IO1.1.存储器IO1.2.设备IO 2.存储介质和存储类型2.1.内存2.2.硬盘2.3.固态硬盘&#xff08;SSD&#xff09;2.4.U盘 3.硬盘的工作原理3.1.磁头3.2.盘片3.3.电动机3.4.硬盘的读写操作 4.文件系统概述4.1.文件系统的类型4.2.文件系统的…

Linux查看与测试磁盘IO性能

1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能&#xff0c;如果这个数值过大&#xff0c;很可能是磁盘 IO 太高了&#xff0c;当然也可能是其他原因&#xff0c;例如网络 IO 过高等。 top命令的其他参数代表的含义详见top命令详解…

Linux 查看磁盘IO

查看命令iostat&#xff0c;# 如果没有 iostat 命令&#xff0c;那么使用 yum install sysstat 进行安装 #间隔1秒&#xff0c;查询10次 iostat -x 1 10 由上图可知&#xff0c;vdb磁盘的 %util【IO】几乎都在100%&#xff0c;原因是频繁的读取数据造成的。 其他字段说明 De…

linux查看磁盘io

iostat -dxk 1 2 iostat iostat&#xff0c;对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。iostat也有一个弱点&#xff0c;就是它不能对某个进程进行深入分析&#xff0c;仅对系统的整体情况进行分析。 命令参数说明…

linux查看磁盘IO,网络IO 总结

linux查看磁盘IO&#xff0c;网络 IO可用的命令 1. top 监控整体服务器&#xff0c;cpu&#xff0c;内存&#xff0c;磁盘&#xff0c;网络等 2. dstat -d 查看当前磁盘每秒的读取&#xff0c;写入量&#xff0c;单位K 3. dstat -r 查看当前磁盘随机的读IOPS&#xff0c;…

linux查看磁盘io使用情况

六种方法 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%n…

从磁盘看 IO

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

硬盘io性能分析

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

磁盘IO 基本常识

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

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

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

磁盘IO

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

磁盘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树&#xff0c;这个和磁盘的特性有着非常大的关系。 我们先来看下磁盘上的物理结构。 如果我们简化一下&#xff0c;可以这么看 再看几张模型图 一个磁盘由大小相同且同轴的圆形盘片组成&#xff0c;磁盘可以转动&#xff0c;各个磁盘必须同…