Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令 来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。
iostat 由 Red Hat Enterprise Linux AS 发布。同时 iostat 也是 Sysstat 的一部分,可以下载到,网址是 http://perso.wanadoo.fr/sebastien.godard/ 
执行 iostat 命令可以从系统启动之后的 CPU 平均时间,类似于 uptime。除此之外,iostat 还对创建一个服务器磁盘子系统的活动报告。该报告包含两部分:CPU 使用情况和磁盘使用 情况。

1. 基本使用
iostat [-c|-d] [-k] [-t] [间隔描述] [检测次数]
参 数:
-c : 仅显示cpu的状态
-d : 仅显示存储设备的状态,不可以和-c一起使用
-k : 默认显示的是读入读出的block信息,用-k可以改成KB大小来显示
-t  : 显示日期
-p device | ALL : device为某个设备或者某个分区,如果使用ALL,就表示要显示所有分区和设备的信息

显示示例:

avg-cpu:  %user   %nice    %sys %iowait   %idle
4.55 0.00 0.63 0.26 94.56 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
cciss/c0d0 30.11 68.20 67.13
cciss/c0d0p1 0.00 0.00 0.00
cciss/c0d0p2 83.78 68.18 67.11
dm- 1.06 0.60 4.07
dm- 82.50 67.42 62.23
dm- 0.21 0.18 0.83
dm- 0.00 0.00 0.00

CPU 占用情况包括四块内容 
%user:显示user level (applications)时,CPU的占用情况。 
%nice:显示user level在 nice priority 时,CPU 的占用情况。 
%sys:  显示 system level (kernel)时,CPU 的占用情况。 
%idle: 显示CPU 空闲时间所占比例。

磁盘使用报告分成以下几个部分: 
Device: 块设备的名字 
tps: 该设备每秒 I/O 传输的次数。多个 I/O 请求可以组合为一个,每个 I/O 请求传输的字节数不同,因此可以将多个 I/O 请求合并为一个。 
Blk_read/s, Blk_wrtn/s: 表示从该设备每秒读写的数据块数量。块的大小可以不同,如1024, 2048 或 4048 字节,这取决于 partition 的大小。 
Blk_read, Blk_wrtn: 指示自从系统启动之后数据块读/写的合计数。也可以查看这几个文件/proc/stat,/proc/partitions,/proc/diskstats的内容。

2. -x 参数
使用-x参数我们可以获得更多统计信息。

iostat -d -x -k
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.80 31.49 42.51 2.92 21.26 1.46 1.16 0.03 0.79 2.62 10.28
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 2.00 20.00 381.00 7.00 12320.00 216.00 6160.00 108.00 32.31 1.75 4.50 2.17 84.20

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%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

3. -c 参数
iostat还可以用来获取cpu部分状态值:

iostat -c
avg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67

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

5. 实例分析

$$iostat -d -k  |grep sda10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.72 18.95 71.53
sda10 299.02 4266.67 129.41
sda10 483.84 4589.90 4117.17
sda10 218.00 3360.00 100.00
sda10 546.00 8784.00 124.00
sda10 827.00 13232.00 136.00

上面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。

iostat -d -x -k
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24

可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。

如果想要对iostat检查多此,每次之间的间隔一定数量的秒数,这样就可以查看每几秒钟之内的io统计数 据,这对性能的测试才具有实际意义:

$> iostat -d
表示没量秒钟检查一次,一共检查三次
avg-cpu: %user %nice %sys %iowait %idle
4.55 0.00 0.63 0.26 94.56 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
cciss/c0d0 30.11 68.20 67.13
cciss/c0d0p1 0.00 0.00 0.00
cciss/c0d0p2 83.78 68.19 67.11
dm- 1.06 0.60 4.07
dm- 82.50 67.42 62.23
dm- 0.21 0.18 0.83
dm- 0.00 0.00 0.00 avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.63 0.00 99.37 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
cciss/c0d0 1.02 0.00 63.27
cciss/c0d0p1 0.00 0.00 0.00
cciss/c0d0p2 15.82 0.00 63.27
dm- 15.82 0.00 63.27
dm- 0.00 0.00 0.00
dm- 0.00 0.00 0.00
dm- 0.00 0.00 0.00 avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.32 0.00 99.68 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
cciss/c0d0 3.06 0.00 26.53
cciss/c0d0p1 0.00 0.00 0.00
cciss/c0d0p2 6.63 0.00 26.53
dm- 0.00 0.00 0.00
dm- 6.63 0.00 26.53
dm- 0.00 0.00 0.00
dm- 0.00 0.00 0.00

其中每一次的统计都是上 一次的统计时间到这次的统计时间之间的统计数据

Linux性能测试 iostat命令的更多相关文章

  1. [转帖]Linux性能测试 pmap命令

    Linux性能测试 pmap命令 https://www.cnblogs.com/txw1958/archive/2012/07/26/linux-pmap.html 名称:       pmap - ...

  2. Linux 安装iostat命令

    首先跟你的Linux系统有关 我用的是Red hat系统 记录下最快的安装iostat命令的方式 起初想查看iostat, 提示 iostat: command not found 于是,通过yum ...

  3. Linux性能测试分析命令_sar+iostat+vmstat+top

    sar主要用于收集并统计系统资源的信息,包括CPU.IO.内存.网卡流量等. vmstat命令主要是对操作系统的虚拟内存.进程.IO读写.CPU活动等整体情况进行统计.但是它不能对某个进程进行深入分析 ...

  4. Linux性能测试分析命令_top

    top命令动态展示系统整体资源和各个进程资源占用状况,是Linux下常用的性能分析工具. top命令语法 使用格式:top [-] [d] [b] [H] [p] [q] [c] [C] [S] [s ...

  5. LINUX 笔记-iostat命令

    显示CPU和I/O统计信息 iostat的不带参数的显示CPU和I/ O的所有分区的统计信息 -c Display the CPU utilization report. -d Display the ...

  6. linux下iostat命令详解

    iostat用于输出CPU和磁盘I/O相关的统计信息 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...

  7. Linux性能测试分析命令_vmstat

    vmstat命令主要是对操作系统的虚拟内存.进程.IO读写.CPU活动等整体情况进行统计.但是它不能对某个进程进行深入分析. vmstat基本语法 命令使用格式:vmstat [options] [d ...

  8. Linux性能测试分析命令_iostat

    iostat用于输出CPU和磁盘I/O相关的统计信息 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...

  9. Linux性能测试 tcpdump命令

    用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头” ...

随机推荐

  1. centos7 安装部署运行 Redis5

    原文:centos7 安装部署运行 Redis5 Redis5 下载与解压(官网: https://redis.io/download ) 下载命令:wget http://download.redi ...

  2. 【Python排序搜索基本算法】之拓扑排序

    拓扑排序是对有向无环图的一种排序,满足例如以下两个条件: 1.每一个顶点出现且仅仅出现一次. 2.若A在序列中排在B的前面.则在图中不存在从B到A的路径. 如上的无环有向图,v表示顶点:v=['a', ...

  3. 看朋友日志发现的一个ios下block相关的内存管理问题,非常奇怪,请大家帮忙一起来回答!

    http://blog.csdn.net/fengsh998/article/details/38090205 这篇文章以下是我的回复.相同的代码仅仅是把变量的定义从局部变量改为类的成员变量就发现了非 ...

  4. View的事件分发机制解析

    引言 Android事件构成 在Android中,事件主要包含点按.长按.拖拽.滑动等,点按又包含单击和双击,另外还包含单指操作和多指操作.全部这些都构成了Android中的事件响应.总的来说.全部的 ...

  5. Avro基础 分类: C_OHTERS 2015-02-14 19:56 310人阅读 评论(0) 收藏

    一.Avro的基本功能 1.定义了数据模式文件的语法,一般使用json文件.以及一些数据基本类型与复杂类型. 2.定义了数据序列化到文件后的数据格式,此格式可供各种语言进行读取. 3.为部分语言定义了 ...

  6. Swift--使图片360° 周期旋转

    UIImageView+Extension.swift import UIKit extension UIImageView { // 360度旋转图片 func rotate360Degree() ...

  7. linux系统下安装与配置apache

    搭建环境:VMware上虚拟的linux 主机:win  7 安装linux下的Apache前准备: 1.httpd服务的配置文件,默认存储路径:/etc/httpd/conf/httpd.conf( ...

  8. UVALive - 3977 Summits (BFS染色)

    题目大意:坑爹的题目.题意那么难理解. 讲的就是,假设该点是山顶的话(高度为h).那么以该点为中心,往外辐射.走高度大于h-d的点,到达不了还有一个比它高的点 这就提示了,高度要从大到小排序,依次以高 ...

  9. [Http] Understand what an HTTP Request is

    Let's look at several HTTP requests to learn the basic structure of these messages, and how the vari ...

  10. VMware Workstation 12 安装mac os x 10.11

    本人近期在学习iOS开发,由于初学,购买设备有点太昂贵了点.和我有意向想法的朋友能够看看在这篇文章.在虚拟机里装MAC os系统. 第一步:准备 VMware Workstation 12版本号 ma ...