iotop命令

 

iotop命令是一个用来监视磁盘I/O使用状况的top类工具,iotop具有与top相似的UI,其中包括pid、user、I/O、进程等相关信息等;

iotop安装:
yum -y install iotop

执行iotop显示:


Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
 1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
 2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
 4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]


第一行READ和WRITE速率总计;
第二行:
  tid:线程id,按p可转换进程pid
  PRIO:优先级
  DISK READ:磁盘读取速率
  DISK WRITE:磁盘写取速率
  SWAPIN:swap交换百分比
  IO>:IO等待所占用百分比
  COMMAND:线程/进程详细信息

命令格式:

iotop  -[选项]
  --version://显示程序的版本号并退出
  -h, --help://显示此帮助消息并退出
  -o, --only://仅显示实际执行I / O的进程或线程,只显示在划硬盘的程序
  -b, --batch://非交互模式,批量处理 用来记录日志的
  -n NUM, --iter=NUM://设定循环几次
  -d SEC, --delay=SEC://设定显示时间间隔[秒]
  -p PID, --pid=PID://要监控的进程/线程[全部]
  -u USER, --user=USER://用户监控[全部]
  -P, --processes://只显示进程,而不是所有线程
  -a, --accumulated://显示累积的I / O而不是带宽
  -k, --kilobytes://使用千字节而不是人性化的单位
  -t, --time://在每一行上添加一个时间戳(暗示--batch)
  -q, --quiet://抑制一些标题行(暗示--batch)

 

怎么获取该程序正在读的什么文件;

这个问题其实很简单,通过 lsof 命令我们就可以达到目的:lsof -c APPname

同样,如果我们知道了被频繁读取的文件是哪个,也可以反查程序:

iotop查看用户进程,lsof -p pid在按该用户进程 pid 查看所打开的文件,lsof -u username按用户名查看打开的文件,

列出某用户的某进程打开的文件lsof -u USERNAME -c APPNAME;

也是可以根据目录进行查询:lsof | grep path;

 

结论:

1.我们给服务器做压力测试时,有的时候很容易碰到磁盘IO读取瓶颈,持续高的IO会导致磁盘读取密集读写磁盘IO成为短板,程序运行过慢;常见的IO服务器例如:数据库服务器,文件服务器,视频服务器等;

2.使用top命令查看%wa指标,该项阈值表示io waiting等待磁盘磁盘写入完成的时间,一般不能高于30%,假如该值过大且持续很久,就证明遇到了I/O瓶颈,需要对软件进行优化,或对硬件进行升级;

3.iostat -d -x 1输出磁盘相关统计信息;

4.iotop定位负载来源于那个进程/线程

5.可以使用pt-ioprofile工具定位IO文件信息;(是Percona公司开发用于管理MySQL的工具)

 或者使用下列命令进行IO文件定位:

1.lsof -c oracle  //

2.lsof | grep path  /oracle/app/oracle.........................

3.iotop   //查看用户进程

4.lsof -p pid  //查看该用户下打开的文件

5.lsof -u oracle   -c oracle   

lsof命令输出属性字段说明:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者 
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 
TYPE:文件类型,如DIR、REG等 
DEVICE:指定磁盘的名称 
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识) 
NAME:打开文件的确切名称 

 

补充:如何进行 io 瓶颈测试?

如何进行大文件IO测试:

1.生成 5g 大小的文件并输出时间,执行速度等信息
time dd if=/dev/zero of=test.file bs=1G count=5
2.测试写入20G数据,数据量越大,测试值应该更精确
sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1M count=20000)" 
sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1000K count=20000;sync)"
dd bs=1M count=20000 if=/dev/zero of=test.dd conv=fdatasync dd命令测试是IO的顺序写和读方式

 

 

 

 

 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值