Linux备忘录:iostat命令

Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat直接安装。

  1. 命令格式:

    iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
    

    iostat -dkx

  2. 命令含义:
    iostat -k
    通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况,负载信息。

    • tps 该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。”一次传输”意思是”一次I/O请求”。多个逻辑请求可能会被合并为”一次I/O请求”。”一次传输”请求的大小是未知的。
    • kB_read/s 每秒从设备(drive expressed)读取的数据量;
    • kB_wrtn/s 每秒向设备(drive expressed)写入的数据量;
    • kB_read 读取的总数据量;
    • kB_wrtn 写入的总数量数据量;这些单位都为Kilobytes。
    • rrqm/s 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
    • rsec/s 每秒读取的扇区数;
    • wsec/s 每秒写入的扇区数。
    • rKB/s The number of read requests that were issued to the device per second;
    • wKB/s The number of write requests that were issued to the device per second;
    • avgrq-sz 平均请求扇区的大小
    • avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。
    • await 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
    • svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
    • %util 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
  3. 命令参数:

    -C 显示CPU使用情况
    -d 显示磁盘使用情况
    -k 以 KB 为单位显示
    -m 以 MB 为单位显示
    -N 显示磁盘阵列(LVM) 信息
    -n 显示NFS 使用情况
    -p [磁盘] 显示磁盘和分区的情况
    -t 显示终端和CPU的信息
    -x 显示详细信息
    -V 显示版本信息

  4. 使用方法:

    iostat -dk 1 10       #查看TPS和吞吐量信息(磁盘读写速度单位为KB), 1秒刷新,总共10次
    iostat -dm 2          #查看TPS和吞吐量信息(磁盘读写速度单位为MB),2秒刷新
    iostat -dxk 1 10      #查看设备使用率(%util)、响应时间(await)
    iostat -c 1 10        #查看cpu状态
    

参考:
http://www.cnblogs.com/peida/archive/2012/12/28/2837345.html

  1. 系统IO高的排查方法:

top 指令发现 CPU %wa 占比较高,说明CPU Wait IO时间较长;load average(等待使用CPU的进程队列)大于CPU核心数说明IO存在IO排队的情况。

iostat 查看IO负载使用情况,%util表示磁盘使用负载,当%util>70%,说明IO压力较大了。

iostat -x 1 10

确定IO存在瓶颈时,使用pidstat指令查看所有进程使用IO的统计值

# 命令的含义:展示进程读写I/O统计值,每秒更新一次
pidstat -d 1

确定IO进程后,lsof(可能需要安装)定位指定进程正在读写的文件:

lsof -p [PID]

其他:

通过iotop命令查看(如果没有这个指令,通过yum install iotop安装)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com

文章标题: Linux备忘录:iostat命令

文章字数: 1,204

本文作者: Jun

发布时间: 2018-07-23, 12:09:00

最后更新: 2022-09-30, 15:01:35

原始链接: http://yoursite.com/2018/07/23/Linux备忘录:iostat命令/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏