系统级IO监控

iostat

先进行安装

yum install -y sysstat

iostat [ options ] [ <interval> [ <count> ] ]

  • options 操作项,
  • interval指定统计时间间隔,
  • count总共输出次数

  • -c 参数,可以用来插卡部分cpu状态信息
[root@localhost ~]# iostat -c
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 12/21/2019 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.08 0.00 0.09 0.00 0.00 99.83
  • -d 参数,显示设备(磁盘)使用状态
  • -m 参数,以兆字节每秒显示统计数据,而不是以块或千字节每秒显示统计数据。显示的数据仅在内核2.4及更高版本中有效。
  • -k 参数,某些使用block为单位的列强制使用Kilobytes为单位

    -** -x 参数**,输出更多详细信息

[root@localhost ~]# iostat -xdm 1
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 12/21/2019 _x86_64_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
scd0 0.00 0.00 0.00 0.00 0.00 0.00 114.22 0.00 1.39 1.39 0.00 1.00 0.00
sda 0.00 0.02 0.21 0.39 0.01 0.02 69.98 0.00 0.29 0.42 0.22 0.19 0.01
dm-0 0.00 0.00 0.17 0.41 0.00 0.01 66.84 0.00 0.32 0.49 0.25 0.19 0.01
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 49.78 0.00 0.15 0.15 0.00 0.09 0.00
  • r/s每秒发送给设备的读请求数量
  • w/s 每秒发送给设备的的写请求数量
  • rMB/s 每秒从设备中读取多少 MBs
  • wMB/s 每秒往设备中写入多少 MBs
  • await 分发给设备的 I/O 请求的平均响应时间(单位是毫秒)
  • %util 分发给设备的 I/O 请求的运行时间所占的百分比。(设备的带宽利用率)

%util设备饱和会发生在这个值接近 100%

另外一种说明: 代表磁盘繁忙程度。100% 表示磁盘繁忙,0% 表示磁盘空闲。

但是注意磁盘繁忙不代表磁盘(带宽)利用率高

在统计时间内所有处理 I/O 时间,除以总共统计时间。例如,如果统计间隔 1 秒,该设备有 0.8 秒在处理 I/O,而 0.2 秒闲置,那么该设备的 %util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是 100% 表示设备已经接近满负荷运行了(当然如果是多磁盘,即使 %util 是 100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)

进程级IO监控

iotop 和 pidstat

  • iotop 顾名思义, IO 版的 top
  • pidstat 顾名思义, 统计进程(pid)的 stat,进程的 stat 自然包括进程的 IO 状况

解决问题:

  1. 当前系统哪些进程在占用 IO,百分比是多少?
  2. 占用 IO 的进程是在读?还是在写?读写量是多少?
[root@localhost ~]# pidstat -d 1
[root@localhost ~]# pidstat -u -r -d -t 1
# -u CPU 使用率
# -r 缺页及内存信息
# -d IO 信息
# -t 以线程为统计单位
# 1 1 秒统计一次

但是也没有办法跟业务层的 read, write 联系在一起,同时颗粒度较粗,没有办法告诉你,当前进程读写了哪些文件?耗时?大小?

文件级IO监控

  • 文件级 IO 监控可以配合/补充”业务级和进程级” IO 分析
  • 文件级 IO 分析,主要针对单个文件,回答当前哪些进程正在对某个文件进行读写操作

lsof 告诉你当前文件由哪些进程打开

# 如果没有,下载
yum install lsof
# 当前目录当前由 bash 和 lsof 进程打开
[root@localhost ~]# lsof ./
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1548 root cwd DIR 253,0 240 33574977 .
bash 1570 root cwd DIR 253,0 240 33574977 .
lsof 42749 root cwd DIR 253,0 240 33574977 .
lsof 42750 root cwd DIR 253,0 240 33574977 .

lsof 命令只能回答静态的信息,并且“打开”并不一定“读取”,

对于 cat,echo 这样的命令,打开和读取都是瞬间的,lsof 很难捕捉

参考

https://blog.csdn.net/zhengchaooo/article/details/80116130

https://jaminzhang.github.io/os/Linux-IO-Monitoring-and-Deep-Analysis/

Linux-IO监控的更多相关文章

  1. Linux IO 监控与深入分析

    https://jaminzhang.github.io/os/Linux-IO-Monitoring-and-Deep-Analysis/ Linux IO 监控与深入分析 引言 接昨天电话面试,面 ...

  2. Linux中IO监控命令的使用分析

    一篇不错的有关linux io监控命令的介绍和使用. 1.系统级IO监控 iostat iostat -xdm 1    # 个人习惯 %util         代表磁盘繁忙程度.100% 表示磁盘 ...

  3. [转]linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  4. Linux下的IO监控与分析

    Linux下的IO监控与分析 近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performan ...

  5. Linux进程实时IO监控iotop命令详解

    介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...

  6. 【转载】Linux下的IO监控与分析

    近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performance and Tuning G ...

  7. Linux下的IO监控与分析(转)

    各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performance and Tuning Guidelines.pdf 1 系统级IO监控 iostat iostat -x ...

  8. linux性能监控 -CPU、Memory、IO、Network等指标的讲解

    [操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...

  9. Linux 服务器监控

    200 ? "200px" : this.width)!important;} --> 标签:iostat/free/top/dstat 概述 文字主要讲述使用linux自带 ...

  10. 【知乎网】Linux IO 多路复用 是什么意思?

    提问一: Linux IO多路复用有 epoll, poll, select,知道epoll性能比其他几者要好.也在网上查了一下这几者的区别,表示没有弄明白. IO多路复用是什么意思,在实际的应用中是 ...

随机推荐

  1. day20190915write from memory

    jQuery_Chapter02_20190912/ jQuery操作类样式.html <!DOCTYPE html> <html> <head> <meta ...

  2. centos 7 MysSQL 5.7.23 源码安装

    MySQL 5.7.23 源码安装 CentOS 7 将默认数据库MySQL替换成了Mariadb. 这里会从系统的环境准备开始一步一步安装. 环境准备 系统版本 内核版本 IP地址 Centos 7 ...

  3. vim介绍、颜色显示和移动光标、一般模式下移动光标及复制、剪切和粘贴

    第4周第4次课(4月12日) 课程内容: 5.1 vim介绍5.2 vim颜色显示和移动光标5.3 vim一般模式下移动光标5.4 vim一般模式下复制.剪切和粘贴 5.1 vim介绍 centos7 ...

  4. shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

    第5周第5次课(4月20日) 课程内容: 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 使用yum+管道方式查看zsh和ks ...

  5. 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】

    [写在前面] 有时候看到大神们的代码,偶尔会用到@来装饰函数.当时查了资料,大致了解装饰器一般用于在不改变原函数的基础上 ,对原函数功能进行修改/增强.使用场景是:日志级别设置.权限校验.性能测试等. ...

  6. 移动前端不得不了解的HTML5 head 头标签 —— Meta 标签

    Meta 标签 meta标签是HTML中head头部的一个辅助性标签,它位于HTML文档头部的 <head> 和 <title> 标记之间,它提供用户不可见的信息.虽然这部分信 ...

  7. kubernetes学习笔记(二)——部署服务

    文章目录 (1)创建app (2)创建app的docker镜像 (3)部署app到k8s (4)参考资料 前面一篇文章部署好了minikube环境,这次学习下怎么部署app到kubernetes环境当 ...

  8. openlayers4 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  9. golang包管理的古往今来

    https://golang.org/ before GO1.5-GOPATH 在GO1.5之前用GOPATH以及GOROOT这两个环境变量来决定包的位置. GOROOT就是告知当前go的安装位置,编 ...

  10. BZOJ[HNOI2005]狡猾的商人(差分约束)

    1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4969  Solved: 2496[Submit][Sta ...