CentOS下用iostat -x查看磁盘的IO信息
Linux系统出现了性能问题,一般我们可以通过top.iostat,vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 www.jb51.net
iostat结果分析
[kefu@SZ-8 linux]$ iostat -x -k
Linux 2.6.18-128.el5_cyou_1.0 (SZ-8.30) 09/08/2011
avg-cpu: %user %nice %system %iowait %steal %idle
16.58 0.00 2.79 0.46 0.00 80.16
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.06 29.28 0.22 37.14 10.21 265.68 14.77 0.02 0.51 0.15 0.55
sda1 0.00 0.00 0.00 0.00 0.00 0.00 10.79 0.00 2.66 2.43 0.00
sda2 0.01 0.78 0.10 0.36 0.81 4.58 23.51 0.00 1.21 0.84 0.04
sda3 0.03 15.17 0.09 35.39 8.98 202.24 11.91 0.01 0.26 0.12 0.44
sda4 0.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 33.33 33.33 0.00
sda5 0.01 1.59 0.03 0.51 0.34 8.40 32.20 0.00 1.19 0.58 0.03
sda6 0.00 0.00 0.00 0.12 0.00 0.48 8.18 0.00 5.02 4.53 0.05
sda7 0.00 0.00 0.00 0.00 0.00 0.00 45.00 0.00 5.52 3.04 0.00
sda8 0.00 0.00 0.00 0.00 0.00 0.00 40.88 0.00 7.62 6.03 0.00
sda9 0.00 0.00 0.00 0.00 0.00 0.00 39.71 0.00 7.37 5.83 0.00
sda10 0.00 0.00 0.00 0.00 0.00 0.00 37.57 0.00 5.70 3.54 0.00
sda11 0.00 11.74 0.01 0.76 0.08 49.97 131.48 0.01 10.74 0.57 0.04
sdb 0.01 3.91 20.24 20.21 1262.95 1853.94 154.09 0.52 12.84 1.97 7.95
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。即delta(usr)/s/1000(因为use的单位为毫秒)
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负载,该磁盘可能存在瓶颈。
比较重要的参数
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
svctm:平均每次设备I/O操作的服务时间
await:平均每次设备I/O操作的等待时间
avgqu-sz:平均I/O队列长度
如果%util接近100%,表明I/O请求太多,I/O系统已经满负荷,磁盘可能存在瓶颈,一般%util大于70%,I/O压力就比较大,读取速度有较多的wait。
同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(I/O等待所占用的CPU时间的百分比,高过30%时I/O压力高) vmstat -d 5
await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有等待时间;如果
await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢。
形象的比喻
r/s+w/s类似于交款人的总数
平均队列长度(avgqu-sz)类似于单位时间里平均排队的人数
平均服务时间(avctm)类似于收银员的收款速度
平均等待时间(await)类似于平均每人的等待时间
平均I/O数据(avgrq-sz)类似于平均每人所买的东西
I/O操作率(%util)类似于收款台前有人排队的时间比例
svctm一般要小于await(因为同时等待的请求的等待时间被重复计算了),svctm的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会
间接导致svctm的增加。await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有
等待时间;如果await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调
整内核elevator算法,优化应用,或者升级CPU
队列长度(avcqu-sz)也可作为衡量系统I/O负荷的指标,但由于avcqu-sz是按照单位时间的平均值,所以不能反映瞬间的I/O洪水。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
centos7新增磁盘、磁盘分区、修改分区属性以及挂载硬盘分区
在RHEL7里新增加一块8G的硬盘,在里面创建一个2G的主分区,6G的扩展分区,再在扩展分区中创建三个2G的逻辑分区,然后再修改逻辑分区的分区类型。在linux文件系统里面最多只能创建4个主分区,如果要创建4个以上的分区,则必须先创建一个扩展分区,然后从扩展分区中划分出多个逻辑分区。再把主分区挂载到新创建的目录上。 首先我们在virtualbox里面新增加一块磁盘:先把虚拟机关机,设置--->存储--->控制器sata--->添加虚拟硬盘。我添加了一块8G的硬盘到我的RHEL7上(原本就有一块20G的硬盘,是我装系统的时候分配的)。 添加完硬盘之后,查看一下硬盘信息,如下可以看到出现了一个未分区的磁盘/dev/sd* 然后查看一下/dev/sdb的磁盘信息fdisk -l /dev/sdb,可以看到磁盘还没有分区,还是一块全新的硬盘。 不知道命令的话输入m获取帮助,嘿嘿 可以看到n为新增分区,p为创建主分区,分区号默认为1,起始扇区这里是2048,我们选择默认的,分区大小我这里分了2个G。 输入p,我们看到分区信息,然后再输入W保存一下 再查看一下dev/sdb信息,...
- 下一篇
CentOS下编译安装Nginx服务器并修改Nginx服务器访问根目录
一、 nginx安装环境 yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 该命令等效于下面4句: 1、 gcc 安装 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ 2、 PCRE pcre-devel 安装 PCRE(PerlCompatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。 yum install -y pcre pcre-devel 3、 zlib 安装 zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。 yum install -y zlib zlib-devel 4、OpenSSL 安装 OpenSSL是一个强大的安全套接...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题