iotop的简介:

iotop是一款开源、免费的用来监控磁盘I/O使用状况的类似top命令的工具,iotop可以监控进程的I/O信息。它是Python语言编写的,与iostat工具比较,iostat是系统级别的IO监控,而iotop是进程级别IO监控。目前最新的版本为iotop 0.6。其官方网址http://guichaz.free.fr/iotop/

iotop的安装:

注意,iotop的安装有前提条件(如果操作系统不满足这些条件,iotop无法正确安装):

1:内核版本为2.6.20或更高版本

2:Python 2.7或更高的版本

官方文档的详细介绍如下:

Linux has always been able to show how much I/O was going on (the bi and bo columns of the vmstat 1 command).

Iotop is a Python program with a top like UI used to show of behalf of which process is the I/O going on. It requires Python ≥ 2.7 and a Linux kernel ≥ 2.6.20 with the TASK_DELAY_ACCT CONFIG_TASKSTATS, TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS options on.

iotopyum安装

yum安装是最简单、快捷的。前提条件是你有配置yum的源配置。

  1. [root@DB-Server ~]# python -V

  1. Python 2.7.5

  1. [root@DB-Server ~]# uname -a

  1. Linux DB-Server 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

  1. [root@DB-Server ~]#

  1.  

  1.  

  1. [root@DB-Server ~]# yum -y install iotop

iotop的源码安装

  1. wget http://guichaz.free.fr/iotop/files/iotop-0.6.tar.bz2

  1. tar -xvf iotop-0.6.tar.gz

  1. cd iotop-0.6

  1. python setup.py build

  1. python setup.py install

iotop的参数

  1. # iotop --help

  1. Usage: /usr/local/sbin/iotop [OPTIONS]

  1.  

  1. DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling

  1. period. SWAPIN and IO are the percentages of time the thread spent respectively

  1. while swapping in and waiting on I/O more generally. PRIO is the I/O priority at

  1. which the thread is running (set using the ionice command).

  1.  

  1. Controls: left and right arrows to change the sorting column, r to invert the

  1. sorting order, o to toggle the --only option, p to toggle the --processes

  1. option, a to toggle the --accumulated option, i to change I/O priority, q to

  1. quit, any other key to force a refresh.

  1.  

  1. Options:

  1.   --version             show program's version number and exit

  1.   -h, --help            show this help message and exit

  1.   -o, --only            only show processes or threads actually doing I/O

  1.   -b, --batch           non-interactive mode

  1.   -n NUM, --iter=NUM    number of iterations before ending [infinite]

  1.   -d SEC, --delay=SEC   delay between iterations [1 second]

  1.   -p PID, --pid=PID     processes/threads to monitor [all]

  1.   -u USER, --user=USER  users to monitor [all]

  1.   -P, --processes       only show processes, not all threads

  1.   -a, --accumulated     show accumulated I/O instead of bandwidth

  1.   -k, --kilobytes       use kilobytes instead of a human friendly unit

  1.   -t, --time            add a timestamp on each line (implies --batch)

  1.   -q, --quiet           suppress some lines of header (implies --batch)

参数

长参数

参数描述

--version

显示版本号

-h

--help

显示帮助信息

-o

--only

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

-b

--batch

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

-n NUM

--iter=NUM

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

-d SEC

--delay=SEC

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

-p PID

--pid=PID

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

-u USER

--user=USER

显示指定的用户的进程的信息

-P

--processes

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

-a

--accumulated

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

-k

--kilobytes

显示使用KB单位

-t

--time

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

-q

--quiet

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

iotop的快捷键

 

r:反向排序,

o:切换至选项--only,

p:切换至--processes选项,

a:切换至--accumulated选项

q:退出 

i:改变线程的优先级

 

iotop的例子

 

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

# iotop -o

2:使用非交互模式将iotop命令输出信息写入日志

#nohup iotop -b -o -n 10 -d 5 -t  > /tmp/iotop.log &

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

# iotop -oP

PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND

11741 be/4 oracle      4.70 M/s    0.00 B/s  0.00 % 98.60 % ora_s004_SCM2

11739 be/4 oracle     66.99 M/s    0.00 B/s  0.00 % 93.30 % ora_s005_SCM2

11741 be/4 oracle     21.76 M/s    0.00 B/s  0.00 % 91.78 % ora_s006_SCM2

11743 be/4 oracle      4.87 M/s    3.78 M/s  0.00 % 27.74 % ora_s007_SCM2

11745 be/4 oracle     62.39 K/s    0.00 B/s  0.00 %  2.88 % ora_s008_SCM2

11733 be/4 oracle     39.00 K/s    0.00 B/s  0.00 %  2.08 % ora_s002_SCM2

11697 be/4 oracle      0.00 B/s 1879.61 K/s  0.00 %  0.30 % ora_dbw0_SCM2

11699 be/4 oracle      0.00 B/s  102.36 K/s  0.00 %  0.20 % ora_lgwr_SCM2

在找到消耗I/O最大的进程后,找出ORACLE进程正在执行的SQL语句

SQL> @getsql_by_spid.sql

Enter value for pid: 11741

old  13:                                WHERE c.spid = '&pid'))

new  13:                                WHERE c.spid = '11741'))

SQL_TEXT

--------------------------------------------

...............................(实际环境中,这里会输出SQL语句)

getsql_by_spid.sql脚本如下所示:

  1. SELECT   /*+ ORDERED */

  1.          sql_text

  1.     FROM v$sqltext a

  1.    WHERE (a.hash_value, a.address) IN (

  1.             SELECT DECODE (sql_hash_value,

  1.                            0, prev_hash_value,

  1.                            sql_hash_value

  1.                           ),

  1.                    DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)

  1.               FROM v$session b

  1.              WHERE b.paddr = (SELECT addr

  1.                                 FROM v$process c

  1.                                WHERE c.spid = '&pid'))

  1. ORDER BY piece ASC

  1. /

这里只简单列了几个例子,因为iotop命令非常简单,了解iotop的参数和快捷方式后,基本上只需根据实际需求去获取进程或信息的I/O信息,剩下就是分析判断了。

Linux iotop工具简介的更多相关文章

  1. Windows/Linux下磁盘使用的图形化工具简介

    Windows/Linux下磁盘使用的图形化工具简介   如何以图形界面查看磁盘及分区的大小及剩余容量呢?今天我为大家介绍两款Windows/Linux下磁盘使用的图形化工具分别是Spacesniff ...

  2. IP地址简介及Linux网络管理工具

    IP地址简介 IP地址又叫网络地址也称逻辑地址,由32位2进制数组成,分4段每段8位,由10进制数表示,范围0~,段与段之间用点隔开采用点分十进制的表示法,在一个网络中ip地址是唯一的,IP地址最主要 ...

  3. Linux性能工具介绍

    l  Linux性能工具介绍 p  CPU高 p  磁盘I/O p  网络 p  内存 p  应用程序跟踪 l  操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l  应用程序的性能问题/功能问 ...

  4. sed 工具简介

    sed 工具简介sed 可以分析 Standard Input (STDIN) 的数据, 然后将数据经过处理后,再将他输出到 standrad out (STDOUT) 的一个工具. 至于处理呢?可以 ...

  5. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

  6. (转)Synopsys工具简介

    DC Ultra--Design Compiler的最高版本 在Synopsys软件中完整的综合方案的核心是DC UltraTM,对所有设计而言它也是最好级别的综合平台.DC Ultra添加了全面的数 ...

  7. 新一代 Linux 文件系统 btrfs 简介

    https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3 ...

  8. Linux系统入门简介<1>

    linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...

  9. [转帖]linux lsof 用法简介

    linux lsof 用法简介 https://www.cnblogs.com/saneri/p/5333333.html 1.简介: lsof(list open files)是一个列出当前系统打开 ...

随机推荐

  1. VMware Workstation 15 Pro中安装ubuntu1804

    这篇笔记是一篇安装教程,没有什么实际的意义,仅为了记录一下……距离上次弄这东西不知道多长时间了,以至于这次再次使用时很是生疏,于是就想着把过程记录下来方便之后查看. 这里不涉及VMware Works ...

  2. CentOS7下部署java+tomcat+mysql项目及遇到的坑

    CentOS 7 下安装部署java+tomcat+mysql 前置:CentOS7安装:https://jingyan.baidu.com/article/b7001fe1d1d8380e7382d ...

  3. python程序员面试高概率会遇到的技术问题

    本篇只列举会问到的技术问题.其他的问题会在另一篇文章多年职场老狗的面试经验提到. 1. TCP三次握手和四次挥手的过程 2.HTTP协议的状态码 3.讲一下自己用过的设计模式 4.python的多线程 ...

  4. 两种最常用的 HTTP 操作方法是:GET 和 POST。

    什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...

  5. webpack动态加载打包chunk命名

    最近,遇到复杂h5页面开发,为了优化H5首屏加载速度,想到使用按需加载的方式,减少首次加载的JavaScript文件体积,于是将处理过程在这里记录一下,涉及到的主要是以下三点: 使用Webpack如何 ...

  6. python3实现栈的逻辑

    python的队列中本身有很多方法 大家可以看下我的这篇博客,对python的队列的常用方法有简单的介绍 https://www.cnblogs.com/bainianminguo/p/7420685 ...

  7. jQuery淡入淡出轮播图实现

    大家好我是 只是个单纯的小白,这是人生第一次写博客,准备写的内容是Jquery淡入淡出轮播图实现,在此之前学习JS写的轮播图效果都感觉不怎么好,学习了jQuery里的淡入淡出效果后又写了一次轮播图效果 ...

  8. Vue-cli脚手架 安装 并创建项目--命令

    检查是否有 node - v 安装Vue-cli npm install -g vue-cli 安装好后,执行 vue list可以看到很多实用的模板,我这里实用的webpack 初始化模板 vue ...

  9. ERROR 1366 (HY000): Incorrect string value: '\xE9\x83\x91\xE5\xB7\x9E' for column 'aa' at row 1 MySQL 字符集

    ERROR 1366 (HY000): Incorrect string value: '\xE9\x83\x91\xE5\xB7\x9E' for column 'aa' at row 1创建表之后 ...

  10. Linux tree

    tree命令,是大小写敏感的.常用的是:1.tree -C 颜色显示 2.tree -f 显示文件全路径ls -R也可以显示树结构,但没上面 清晰 3.tree -L n n 是数字,表示显示几层 4 ...