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%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后显示统计
linux查看磁盘io使用情况相关推荐
- linux查看磁盘IO,网络IO 总结
linux查看磁盘IO,网络 IO可用的命令 1. top 监控整体服务器,cpu,内存,磁盘,网络等 2. dstat -d 查看当前磁盘每秒的读取,写入量,单位K 3. dstat -r 查 ...
- linux查看磁盘io性能
1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...
- Linux 查看磁盘IO的使用
我们在线上linux服务器排查问题时,一般会通过top.free.netstat.df -h等命令排查cpu.内存.网络和磁盘等问题.有的时候我们需要更进一步了解磁盘io的使用情况,那么本文就是重点讲 ...
- linux查看磁盘io的几种方法
怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: 第一种:用 top 命令 中的cpu 信息观察 Top可以看到的cpu信息有: Tasks: 29 total, 1 runnin ...
- linux查看磁盘io命令
五种方法 top命令.vmstat命令.iostat命令.iotop命令.pt-ioprofile命令 一. top命令 top - 11:41:22 up 51 min, 2 users, load ...
- Linux 查看磁盘IO并找出占用IO读写很高的进程
根据磁盘IO告警,找到占用磁盘IO (util)读写很高的进程. 背景-线上告警 线上一台服务器告警,磁盘利用率 disk.util > 90,并持续告警. 登录该服务器后通过 iostat - ...
- linux查看磁盘io
iostat -dxk 1 2 iostat iostat,对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.iostat也有一个弱点,就是它不能对某个进程进 ...
- centos 查看磁盘io使用情况,centos找出占用io读写很高的进程
yum -y install sysstat 执行:iostat -x 1 10 一般%util大于70%,I/O压力就开始出现了,如果%util越接近100%,表明I/O压力越大 rrqm/s:每秒 ...
- Linux 查看磁盘IO
查看命令iostat,# 如果没有 iostat 命令,那么使用 yum install sysstat 进行安装 #间隔1秒,查询10次 iostat -x 1 10 由上图可知,vdb磁盘的 %u ...
最新文章
- 关于 linux io_uring 性能测试 及其 实现原理的一些探索
- SQL Server DB Link相关
- R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签
- 磁头号和起始扇区的计算方法------软盘结构
- 设置log缓存_带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
- jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选
- java gradle入门_Gradle入门:我们的第一个Java项目
- 迪普科技负载均衡助力金关工程(二期)核心业务交付
- oracle标准成本的维护,Oracle标准成本计算和平均成本计算比较
- 怎么清除DNS缓存?
- finecms存在任意文件上传漏洞复现
- HTML+CSS学习打卡第一周
- epub阅读器 html,打造web版epub阅读器(书架设计)
- android+ios+账号互通,ios和安卓游戏账号能互通吗?
- linux怎么将一个文件移动到另一个目录下
- U盘文件变快捷方式--解决办法
- HTML/设置网页背景图片+背景透明度设置
- ./configure 自动生成makefile
- 最美十大爱情经典句子
热门文章
- java酷炫代码_Java8 中有趣酷炫的小技巧
- python最适合做什么生意好-本周互联网关注(2015515):劳动人民的生意经、python好还是go好...
- vue-cli3.0 + echarts展示中国地图
- Centos 7 无法上网的解决办法
- python获取kegg pathway map的信息
- 蓝牙血压计PCBA硬件解决方案
- 电子血压计设计c语言编程,电子血压计电路设计图精华
- 51单片机的频率计设计
- 免费专利检索和下载网站(亲测超实用)
- 粘贴应变片步骤及注意事项