iotop-监控磁盘I/O

琉璃3年前技术文章1132

iotop概述

iotop 是一个类似 top 的工具,用来显示实时的磁盘活动。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况。iotop 监控 Linux 内核输出的 I/O 使用信息,并且显示一个系统中进程或线程的当前 I/O 使用情况。它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程花费的时间的百分比

安装iotop

yum install -y iotop


iotop 参数

参数

描述

-o

只显示正在产生I/O的进程或线程,运行过程中,可以通过按o随时切换

-b

非交互式下运行,一般用来记录日志

-n NUM

设置监控(显示)次数,主要用于非交互式,默认无限

-d SEC

设置显示的间隔秒数,支持非整数

-p PID

只显示指定进程(PID)的信息

-u USER

显示指定用户的进程信息

-P

只显示进程,不显示所有线程

-a

累积的I/O,显示从iotop启动后每个进程累积的I/O总数,便于诊断问题

-k

显示使用KB单位

-t

非交互模式下,加上时间戳

-q

只在第一次监测时显示列名. 去除头部一些行:这个参数可以设置最多3次来移除头部行:-q列头部只在最初交互显示一次;-qq列头部不显示;-qqq,I/O的总结不显示


I/O的常用快捷键

左右箭头:改变排序方式,默认是按IO排序
 
r:改变排序顺序
o:只显示有IO输出的进程
p:进程/线程的显示方式的切换
a:显示累积使用量
q:退出


交互模式

如果在命令启动时没有指定-b参数,可以在接口的运行过程中进行如下交互

1.排序字段:使用键盘左右箭头控制排序的字段(排序字段右侧有">"或"<",例如: IO>)\
2.排序方式:"r"键可以控制升序还是降序排列(">"表示降序,"<"表示升序);
3.仅显示有IO发生的进程:"o"控制是否仅显示发生IO的进程;
4.进程/线程:"p"键控制线程号/进程号的(PID/TID)
5.累积流量:"a"键控制是否显示累积IO量,更加利于查看问题
6.强制刷新:"q"键退出,除了这些键之外的任意键都会强制刷新。


iotop示例

iotop行的含义

image.png

# Total DISK READ:从磁盘中读取的总速率
# Total DISK WRITE:往磁盘里写入的总速率
# Actual DISK READ:从磁盘中读取的实际速率
# Actual DISK WRITE:往磁盘里写入的实际速率
# TID:线程ID,按p可转换成进程ID
# PRIO:优先级
# USER:线程所有者
# DISK READ:从磁盘中读取的速率
# DISK WRITE:往磁盘里写入的速率
# SWAPIN:swap交换百分比
# IO>:IO等待所占用的百分比
# COMMAND:具体的进程命令

参数用法

只显示正在产生I/O的进程

iotop -o


显示指定PID

iotop -b -n 2 -d 5 -p 10
b是非交互式,-n 2指监控2次,-d 5 表示5秒刷新一次,-p是只显示进程


image.png


显示指定用户

iotop -b -n 2 -d 5 -u root
b是非交互式,-n 2指监控2次,-d 5 表示5秒刷新一次,-u是指定用户

image.png

打印指定PID的时间戳

iotop -b -n 2 -d 5 -p 1 -u root -t -k
t表示打印时间戳,-k是单位为KB


image.png


借助iotop命令找到消耗I/O最高的进程,然后通过进程找到其正在执行的SQL语句

iotop -oP

image.png

进行压力测试

使用dd命令

dd if=/dev/zero of=/home/1.txt count=1024 bs=1G

总结

iotop 是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息;与iostat工具比较,iostat是系统级别的IO监控,而iotop是进程级别IO监控


相关文章

磁盘分区与挂载

磁盘分区与挂载

背景当我们新建一个服务器时,需要对磁盘进行分区、格式化、挂载等操作。那么我们应该如何进行呢?一、LVM技术1、安装所需的lvm工具yum install -y lvm22、创建物理卷PVpvcreat...

kafka安全认证与授权

kafka安全认证与授权一、SASL、SSL、ACL介绍1.SASL鉴权协议,主要用来保证客户端登录服务器的时候,传输的鉴权数据的安全性,SASL是对用户名和密码加解密用的 2.SSL是一种间于传输层...

MySQL性能优化(一)索引缺失引起的全表扫描

MySQL性能优化(一)索引缺失引起的全表扫描

索引缺失是引起数据库性能问题的第一大原因。一个例子这是一个非常简单的SQL,SELECT * FROM template WHERE templet_id ...

MySQL运维实战(1.1)安装部署:使用RPM进行安装部署

MySQL运维实战(1.1)安装部署:使用RPM进行安装部署

我们在生产环境部署mysql时,一般很少使用rpm。用rpm或或者其他包管理器安装mysql,好处是安装简单,而且很多系统可能都自带了某个版本的mysql。但是使用RPM安装也存在一些缺点:1、rpm...

数仓主流架构简介之三

数仓主流架构简介之三

一、数仓架构经历过程随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在不断演进,分别经历了以下过程:早期经典数仓架构 > 离线大数据架构 &...

大数据集群监控配置操作指导(一)prometheus+grafana部署

大数据集群监控配置操作指导(一)prometheus+grafana部署

1.prometheus+grafana部署(单独部署到一台服务器。4c8g。系统盘300G。操作系统建议7.6到7.9)1.1下载prometheus和grafana的二进制包mkdir /opt/...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。