一,iotop的作用:

iotop是监视磁盘I/O使用状况的top类工具,

可以针对进程和线程统计io的使用情况

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,安装iotop:

[root@database1 ~]# yum install iotop

三,查看帮助

[root@database1 ~]# iotop --help
Usage: /usr/sbin/iotop [OPTIONS]
DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling period.
SWAPIN and IO are the percentages of time the thread spent respectively while swapping in and waiting on I/O more generally.
PRIO is the I/O priority at which the thread is running (set using the ionice command). Controls:
left and right arrows to change the sorting column,
r to invert the sorting order,
o to toggle the --only option,
p to toggle the --processes option,
a to toggle the --accumulated option,
q to quit, any other key to force a refresh. Options:
--version show program's version number and exit
-h, --help show this help message and exit
-o, --only only show processes or threads actually doing I/O
-b, --batch non-interactive mode
-n NUM, --iter=NUM number of iterations before ending [infinite]
-d SEC, --delay=SEC delay between iterations [1 second]
-p PID, --pid=PID processes/threads to monitor [all]
-u USER, --user=USER users to monitor [all]
-P, --processes only show processes, not all threads
-a, --accumulated show accumulated I/O instead of bandwidth
-k, --kilobytes use kilobytes instead of a human friendly unit
-t, --time add a timestamp on each line (implies --batch)
-q, --quiet suppress some lines of header (implies --batch)

四,查看版本:

[root@yjweb ~]# iotop --version
iotop 0.6

五,iotop常用参数

1,只显示有io操作的进程

[root@database1 ~]# iotop -o

说明:-o:只显示有io操作的进程

2,显示针对进程的统计

[root@database1 ~]# iotop -o -P

说明:默认是针对线程的统计,表头是TID,

如果针对进程统计,表头是PID

3,显示启动后累积的数据:

[root@database1 ~]# iotop -oa

说明:

只看某一个时间点的数据有时找不到消耗I/O最高的进程,

这时查看累积的数据显示更有效

4,监控指定pid的io使用:

[root@database1 ~]# iotop -p 26474

说明:

-p  指定进程id

5,指定刷新的间隔时间

[root@database1 ~]# iotop -o -d 2

说明:默认是1秒,

-d: 指定间隔的秒数,例子中是2秒刷新一次

6,查看指定用户的io使用

[root@database1 ~]# iotop -o -a -u mysql

说明:

-u: 指定用户,当查询mysql的io时很方便

6,非交互模式,批量处理 用来记录日志

[root@database1 ~]# iotop -boqtn3

说明:

-b: batch处理,不支持交互,常用来输出日志
-q: quiet 只输出一次表头
-n:用来指定输出循环次数:例子中我们用了3次
-t: 增加一列时间
-t和-q两个参数只适用-b

如何输出到文件:

[root@database1 ~]# iotop -boqn3 > /root/iotop0319.txt 2>&1

六,交互命令:

o:   打开/关闭 只显示有io的进程/线程

p: 切换按进程和按线程的统计

a: 切换是否采用累积统计模式

q:退出

七,显示内容各表头的说明:

tid:线程id,按p可转换进程pid

PRIO:优先级

DISK READ:磁盘读取速率

DISK WRITE:磁盘写入速率

SWAPIN:swap交换百分比

IO>:IO等待所占用百分比

COMMAND:线程/进程详细信息

八,得到pid/tid后,如何找出它正在打开的文件?

用lsof

[root@database1 ~]# lsof -p 26474 | more
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 26474 mysql cwd DIR 252,17 4096 18268161 /data/mysql/data
mysqld 26474 mysql rtd DIR 252,1 4096 2 /
mysqld 26474 mysql txt REG 252,1 11172576 1055031 /usr/sbin/mysqld
。。。

说明:lsof -p参数:列出指定进程id下打开的文件

九,找到了mysql大量消耗io的线程id,如何找出对应的sql?

说明:mysql在5.7版本给performance_schema.threads表增加了thread_os_id, 即系统线程字段
低于5.7版本的mysql没办法根据操作系统的线程id找到sql

看例子:如果线程id是:19440

执行下面的sql即可:

SELECT a.name,
a.thread_id,
a.thread_os_id,
a.processlist_id,
a.type,
b.user,
b.host,
b.db,
b.command,
b.time,
b.state,
b.info
FROM performance_schema.threads a
LEFT JOIN information_schema.processlist b
ON a.processlist_id = b.id
where a.type = 'FOREGROUND'
and a.thread_os_id =19440

十,查看当前的centos版本

[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

centos8平台使用iotop监控磁盘io的更多相关文章

  1. centos8平台使用iostat监控磁盘io

    一,iostat所属的包: [root@centos8 ~]# whereis iostat iostat: /usr/bin/iostat /usr/share/man/man1/iostat.1. ...

  2. Cacti:添加监控磁盘IO

    来自:http://blog.sina.com.cn/s/blog_61c07ac50101gkzp.html 1.检查net-snmp是否支持IO监控 snmpwalk -v 1 -c public ...

  3. Cacti添加IO模板并监控磁盘IO

    1.下载Cacti_Net-SNMP_DevIO_v3.1.zip 下载Cacti_Net-SNMP_DevIO_v3.1.zip,解压并上传net-snmp_devio.xml到/resource/ ...

  4. 第七章——DMVs和DMFs(4)——用DMV和DMF监控磁盘IO

    原文:第七章--DMVs和DMFs(4)--用DMV和DMF监控磁盘IO 前言: 本文为本系列最后一篇,作为DBA,你必须经常关注磁盘的I/O问题,一旦出现问题,要尽快分析出是什么问题.SQLServ ...

  5. zabbix应用之Low-level discovery监控磁盘IO

    参考文章: http://qicheng0211.blog.51cto.com/3958621/1599776/ zabbix自带的"Template OS Linux"模板支持监 ...

  6. Zabbix 监控磁盘IO

    Zabbix 监控磁盘IO 1.数据获取脚本 #!/bin/bash # resource: http://www.muck.net/19/getting-hard-disk-performance- ...

  7. Zabbix自动发现并监控磁盘IO、报警

    本文转载自: https://www.93bok.com 引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务 ...

  8. Zabbix 自动发现并监控磁盘IO、报警 引言

    引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现这个功能,自 ...

  9. centos8平台使用pidstat监控cpu/内存/io

    一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...

随机推荐

  1. JVM-虚拟机执行子系统

    类的加载由JVM执行引擎来完成 早期--编译期:源代码文件*.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 -> 语义分析 ...

  2. oracle数据处理之sql loader(三)

    数据装载 sql loader(PPT-I-490-498) 14.1 sql*loader:将外部数据(比如文本型)数据导入oracle database.(用于数据导入.不同类型数据库数据迁移) ...

  3. QEMU 虚拟机网卡探究

    前述 我们知道无论是VMware,Virtual Box还是HyperV 都支持 NAT/Bridge/Host-Only 三种上网方式.其中 NAT 是我最常用,最熟悉的. 需要说明的是,无论是NA ...

  4. 第24课 - #pragma 使用分析

    第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...

  5. Node.js 从零开发 web server博客项目[安全]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  6. tagCould3d 移动端优化版

    针对https://github.com/bitjjj/JS-3D-TagCloud这个版本的做了移动端性能优化(使用transform做偏移及缩放,优化帧).基本原理一致. class TagCou ...

  7. nginx upstream一致性哈希的实现

    地址:http://wiki.nginx.org/HttpUpstreamConsistentHash 首先声明一个命令: static ngx_command_t  ngx_http_upstrea ...

  8. 喜大普奔!GitHub中文版帮助文档上线了!

    日前,GitHub 文档的简体中文正式发布,开发者可以到官方文档上随意查阅浏览中文文档啦!   对于想要玩 GitHub,但一直苦于英语水平较差的程序员来说,这真是一个天大的好消息.下面一起来感受一下 ...

  9. Shell学习(一)认识Shell

    一.啥是Shell Shell : 一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell脚本 :  一种为 shell 编写的 ...

  10. 堆的源码与应用:堆排序、优先队列、TopK问题

    1.堆 堆(Heap))是一种重要的数据结构,是实现优先队列(Priority Queues)首选的数据结构.由于堆有很多种变体,包括二项式堆.斐波那契堆等,但是这里只考虑最常见的就是二叉堆(以下简称 ...