Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。在一个以前看到系统监控工具,总在想那些监控工具的代理,如何收集系统性能信息,io性能,cpu使用,带宽使用等信息,偶然发现,不同系统均提供有性能分析工具的,代理可通过这些命令获取系统性能信息,个人猜测,不知道具体是不是这样的。其中iostat可以给我们提供丰富的IO状态数据,下边就来看一下iostat如何使用,命令能够输出那些信息。

简述

Linux系统中通过iostat我们能查看到系统IO状态信息,从而确定IO性能是否存在瓶颈。

命令安装

iostat是查看Linux系统io是否存在瓶颈顶好用的一个命令,但是由此而系统默认没有安装的,以centos系统为例,看看如何安装iostat命令。

[root@localhost ~]# iostat
-bash: iostat: command not found
[root@localhost ~]# yum install -y sysstat

命令使用

[root@localhost ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]

iostat 主要有三个操作箱,options 操作项,interval指定统计时间间隔,count总共输出次数
-c 参数,可以用来插卡部分cpu状态信息

[root@localhost ~]# iostat -c
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.00 0.00 0.00 99.98

-k 参数,某些使用block为单位的列强制使用Kilobytes为单位

[root@localhost ~]# iostat -k 1 10
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.00 0.00 0.00 99.98 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.14 0.04 1.65 969915 41732790
dm-0 0.42 0.04 1.65 936269 41632492
dm-1 0.00 0.00 0.00 19920 62056
dm-2 0.00 0.00 0.00 1001 38212
dm-3 0.00 0.01 0.00 127405 7160 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 4.00 0.00 48.00 0 48
dm-0 12.00 0.00 48.00 0 48
dm-1 0.00 0.00 0.00 0 0
dm-2 0.00 0.00 0.00 0 0
dm-3 0.00 0.00 0.00 0 0

-d 参数,显示设备(磁盘)使用状态

[root@localhost ~]# iostat -d 1 3
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.14 0.08 3.31 1939830 83470564
dm-0 0.42 0.07 3.30 1872538 83269968
dm-1 0.00 0.00 0.00 39840 124112
dm-2 0.00 0.00 0.00 2002 76424
dm-3 0.00 0.01 0.00 254810 14320
解释一下输出列表示什么意思:
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。 上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS是39.29,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)

-x 参数,输出更多详细信息

[root@localhost ~]# iostat -x 1 2
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.00 0.00 0.00 99.98 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.27 0.00 0.14 0.08 3.31 23.78 0.00 0.31 1.51 0.29 0.16 0.00
dm-0 0.00 0.00 0.00 0.41 0.07 3.30 8.13 0.00 2.64 2.05 2.64 0.06 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 2.29 1.61 2.51 0.08 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 8.01 0.00 19.82 0.64 20.30 0.03 0.00
dm-3 0.00 0.00 0.00 0.00 0.01 0.00 30.85 0.00 0.04 0.02 0.20 0.02 0.00
解释一下 -x参数输出列意思
rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。 rsec/s:每秒读取的扇区数;wsec/:每秒写入的扇区数。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second; await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

常见用法

iostat -d -k 1 10        #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)
iostat -c 1 10 #查看cpu状态

使用实例

查看指定磁盘吞吐量和速率

[root@localhost ~]# iostat -d -d 1 1
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.14 0.08 3.31 1939830 83482716
dm-0 0.42 0.07 3.30 1872538 83282120
dm-1 0.00 0.00 0.00 39840 124112
dm-2 0.00 0.00 0.00 2002 76424
dm-3 0.00 0.01 0.00 254810 14320
#从结果看到平均传输次数0.14,每秒读取0.08M,每秒写3.31M

磁盘性能统计

[root@localhost ~]# iostat -x -k 1 1
Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.00 0.00 0.00 99.98 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.27 0.00 0.14 0.04 1.65 23.78 0.00 0.31 1.51 0.29 0.16 0.00

Linux命令详解----iostat的更多相关文章

  1. linux命令详解——iostat

    简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和时间 ...

  2. Linux命令详解之—tail命令

    tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...

  3. Linux命令详解之—less命令

    Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...

  4. Linux命令详解之—more命令

    Linux more命令同cat命令一样,多用来查看文件内容,本文就为大家介绍下Linux more命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux的more命令类似 ca ...

  5. 【转】linux命令详解:md5sum命令

    [转]linux命令详解:md5sum命令 转自:http://blog.itpub.net/29320885/viewspace-1710218/ 前言 在网络传输.设备之间转存.复制大文件等时,可 ...

  6. Linux命令详解之—cat命令

    cat命令的功能是连接文件或标准输入并打印,今天就为大家介绍下Linux中的cat命令. 更多Linux命令详情请看:Linux命令速查手册 Linux 的cat命令通常用来显示文件内容,也可以用来将 ...

  7. Linux命令详解之—pwd命令

    Linux的pwd命令也是一个非常常用的命令,本文为大家介绍下Linux中pwd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux pwd命令用于显示工作目录. 执行pwd指 ...

  8. Linux命令详解之–cd命令

    cd命令是linux实际使用当中另一个非常重要的命令,本文就为大家介绍下Linux中cd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux cd命令用于切换当前工作目录至 d ...

  9. Linux命令详解之–ls命令

    今天开始为大家介绍下Linux中常用的命令,首先给大家介绍下Linux中使用频率最高的命令--ls命令. 更多Linux命令详情请看:Linux命令速查手册 linux ls命令用于显示指定工作目录下 ...

随机推荐

  1. 微软更新导致的IIS7设置默认主页无效

    近期两个superKM的老客户出现问题,网站不能自动检索默认文档,必须通过完整网址才能访问. 值得一提的是出现问题的都是 IIS7 和7.5版本,服务器为windows server2008 R2. ...

  2. LG3898 [湖南集训]大新闻

    题意 题目描述 **记者弄了个大新闻,这个新闻是一个在 [0,n) 内等概率随机选择的整数,记其为 x.为了尽可能消除这个大新闻对公众造成的不良印象,我们需要在 [0,n)内找到某一个整数 y,使得 ...

  3. LeetCode Majority Element Python

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  4. SQL Server中如何实现遍历表的记录

    SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录. 但游标在实际的开发中都不推荐使用. 我们知道还可以借助临时表或表变 ...

  5. js 验证代码部分的简单实现

    接上面的文章. 我们已经简单的设计了关于如何进行处理了,但是如何进行校验呢,代码也是比较简单的因为我们使用的是asp.net 简单并且功能强大. 我们同样使用的是HttpResponse,简单的模拟代 ...

  6. /etc/grub.conf

    http://leejia.blog.51cto.com/4356849/788902 grub.conf是grub的主配置文件,通过这个配置文件,grub才能找到kernel,系统才能正常启动. # ...

  7. PYTHON之MOCK WEB接口

    在日常的测试工作中,有时会有需要调用外部接口,拿到返回数据用以满足当前的测试任务的需求.但是当外部接口不可用,或者没有提供测试用环境时,我们就需要自己来mock一个接口的返回内容了,先让我们看一看下面 ...

  8. Angular 4 辅助路由

    1.辅助路由 2. 创建chat组件 ng g component chat 3. 组件html css: .chat{ background:green; height:100px; width:2 ...

  9. Microsoft Dynamics CRM 4.0导入组织(Import Organization)时间过长的原因总结

    952934    How to move the Microsoft Dynamics CRM 4.0 deployment http://support.microsoft.com/default ...

  10. 【python】专用下划线标识符说明

    __xxx__:系统定义名字 __xxx:类中私有变量名 说明:__xxx看做“私有的”,在模块或者类外是不可以使用.