Linux服务器性能测试之iostat详解

目录

1.iostat简介

2.命令与参数

3.深入解析

4.其他 


1.iostat简介

iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。

iostat属于sysstat软件包,可以通过命令进行安装:

sudo dpkg -i sysstat_11.6.1-1ubuntu0.1_amd64.deb(安装包可以从网上下载)

iostat有以下缺陷:

iostat的输出结果大多数是一段时间内的平均值,因此难以反映峰值情况 iostat仅能对系统整体情况进行分析汇报,却不能针对某个进程进行深入分析。 iostat未单独统计IO处理信息,而是将IO处理时间和IO等待时间合并统计,因此包括await在内的指标并不能非常准确地衡量磁盘性能表现。

2.命令与参数

语法:iostat [ 选项 ] [<时间间隔> <次数> ]

-c: 仅显示CPU统计信息,与-d选项互斥
-d:仅显示磁盘统计信息,与-c选项互斥
-h:使用NFS(Network File System网络文件系统)的输出报告,更加友好可读。需要使用-n参数开启NFS。
-k:以 kb 为单位显示,默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
-m:以 mb 为单位显示(该参数仅在linux内核版本2.4以后数据才是准确的)
-N:显示磁盘阵列(LVM) 信息。
-V:显示版本信息
-x:显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息(该参数仅在linux内核版本2.4以后数据才是准确的)
-n:显示NFS(Network File System网络文件系统) 使用情况(该参数仅在linux内核版本2.6.17以后有效)
-t:输出报告时显示系统时间
-p:[ { device [,…] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
-y:跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来的累计的数据

例如,iostat -d -x -k 1 3:每1s采集一次数据,显示3次,以kb为单位显示磁盘使用情况详细信息。

3.深入解析

avg-cpu段:总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值(系统开机至此刻平均统计信息)

  • %usr CPU在用户模式下的时间百分比(显示用户级(应用程序)执行产生的cpu使用率百分比(理论上一个良好的系统cpu处于user模式下的时间小于60%为优(参考)如果高于70%,可以考虑对应用程序进行优化))
  • %nice CPU处在带NICE值的用户模式下的时间百分比
  • %system CPU在系统模式下的时间百分比(系统(内核)执行产生的cpu使用率百分比%user+%sys<80%,Sys%>30%时,观察是否有过多的中断或上下文切换)
  • %iowait CPU等待输入输出完成时间的百分比(若 %iowait 的值过高,表示硬盘存在I/O瓶颈,iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题)
  • %steal 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比(是衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机的其他的虚拟机使用,一般%steal值较高时,说明宿主机的资源使用已到达瓶颈)
  • %idle CPU空闲时间百分比(%idle高但系统响应慢,说明cpu在等待分配内存,此时应增加内存容量,idle%过低持续小于10%则说明需要加强cpu)

 device段:iostat -d -x sdc 1 1

  • r/s:每秒完成的读I/O设备次数
  • w/s:每秒完成的写I/O设备次数
  • 磁盘IOPS=r/s+w/s(I/O per second,即每秒钟可以处理的I/O个数。随机读写频繁的应用(一般指I/O小于64KB的应用场景),如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。)
  • rkb/s:每秒读K字节数
  • wkb/s:每秒写K字节数
  • 磁盘吞吐量(throughput)=rkB/s+wkB/s(顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标。)
  • rrqm/s:每秒合并的读操作次数
  • wrqm/s:每秒合并的写操作次数
  • r_await:每个读操作平均所需的时间(单位ms)(不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间)
  • w_await:每个写操作平均所需的时间(单位ms)(不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间)
  • await=r_await + w_await(磁盘对请求响应时间,可以理解为 IO 的响应时间,一般地系统 IO 响应时间应该低于 5ms,如果大于 10ms 就比较大了,值越小性能越好)
  • aqu-sz:平均I/O队列长度,即IO等待个数(数值越低越好,这个值在正常的系统中不应该超过113太多,如果到达了200左右,甚至上千,则说明发生了IO拥塞,而系统还在往I/O队列中放请求(有一个列外是在执行sync,fsync操作时,该值到达最大值8192是正常的),这个值越低越好)
  • svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)(对于普通硬盘来说,该时间通常不应该超过20ms;如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。)
  • util%:单位时间内处理IO的时间比(如果%util值接近100%,则表示设备可能已经满负荷运行了,注意:如果是多硬盘,即使%util值是100%,因为磁盘的并发能力,所以磁盘的使用未必就到达了瓶颈;如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能)
  • 正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加
  •  await 远远高于 svctm,说明 IO 等待队列较长,磁盘十分繁忙;而 w_await 远高于 r_await,说明是磁盘写入造成的磁盘繁忙。

4.其他 

重点关注3个性能核心指标:iopsthroughputawait与多个任务指标。

如何通过以上指标数据判断磁盘有没有瓶颈呢?

①查看await值,响应时间是不是长期响应慢,如果是那肯定有问题;
②查看svctm的值与await很接近,说明IO任务提交之后,IO立即响应了,表示几乎没有I/O等待,磁盘性能很好,反之则有问题;
③查看aqu-sz队列值,越小越好,反之差值越大,队列越大,说明有问题;
④查看iops与业务block块大小对比FIO压测数据,看有没有到瓶颈;
⑤将throughput数据相加(或者执行sar -n DEV 1 统计网口流量)与光纤能支持的网络带宽对比,看有没有到网络传输瓶颈。

内存使用率导致问题的判断标准:

无性能压力:0%~50%

有一定性能压力:50%~70%

达到性能阈值:70%~80%

严重性能问题:80%~100%

内存使用率长时间处于95%以上---P1级bug

内存使用率长时间处于90%以上---P2级bug

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值