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的源配置。

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

Python 2.7.5

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

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

[root@DB-Server ~]# 

 

 

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

iotop的源码安装

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

tar -xvf iotop-0.6.tar.gz 

cd iotop-0.6

python setup.py build

python setup.py install

iotop的参数

# iotop --help

Usage: /usr/local/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, i to change I/O priority, 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)

参数

长参数

参数描述

--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脚本如下所示:

SELECT   /*+ ORDERED */

         sql_text

    FROM v$sqltext a

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

            SELECT DECODE (sql_hash_value,

                           0, prev_hash_value,

                           sql_hash_value

                          ),

                   DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)

              FROM v$session b

             WHERE b.paddr = (SELECT addr

                                FROM v$process c

                               WHERE c.spid = '&pid'))

ORDER BY piece ASC

/

这里只简单列了几个例子,因为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. jQuery 源码解析(二十五) DOM操作模块 html和text方法的区别

    html和text都可以获取和修改DOM节点里的内容,方法如下: html(value)     ;获取匹配元素集合中的一个元素的innerHTML内容,或者设置每个元素的innerHTML内容,   ...

  2. VUE+Element UI实现简单的表格行内编辑效果

    原理是通过Css控制绑定的输入控件与显示值,在选中行样式下对控件进行隐藏或显示 <!DOCTYPE html> <html> <head> <meta cha ...

  3. Prometheus学习系列(一)之Prometheus简介

    前言 本文来自Prometheus官网手册 和 Prometheus简介 什么是prometheus? Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包.自2012 ...

  4. 文字转语音?我只用十行Python代码就搞定了!

    详细使用教程 1.没安装Python的小伙伴需要先安装一下 2.win+r输入cmd打开命令行,输入:pip install baidu-aip,如下安装百度AI的模块. 3.新建文本文档,copy如 ...

  5. 48-创建 overlay 网络

    上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络. 在 host1 中创建 overlay 网络 ov_net1: -d overlay 指定 driver 为 ...

  6. ORA-16032和ORA-07286 LOG_ARCHIVE_DEST_1没生效

    主备切换在备库startup时出现归档路径没写到spfile里...注意:修改参数时最好带上scope=spfile或scope=both,以免重启出现异常.SQL> startup mount ...

  7. 学习之Redis(二)

    Redis的对象和数据结构 一.字符串对象(请参考学习之Redis(一):https://www.cnblogs.com/wbq1994/p/12029516.html) 二.列表对象 列表对象的编码 ...

  8. 12.2 中的Data Guard Standby 密码文件自动同步 (Doc ID 2307365.1)

    Data Guard Standby Automatic Password file Synchronization in 12.2 (Doc ID 2307365.1) APPLIES TO: Or ...

  9. tcp客户端程序开发

    https://www.cnblogs.com/python-No/ 话不多说,直接进入正题 一:客户端一共分为5大块: 1.创建客户端套接字 2.和服务端套接字建立连接 3.发送数据 4.接收发送 ...

  10. git版本对比

    1.git diff版本比对 (未添加到暂存区间之前的区别对比) 未进行修改,则显示为空 进行文件修改,再执行git diff 当执行git add .  之后,再次git diff则为空 缓存和提交 ...