Linux iostat监测IO状态 - 一个故事@MySQL DBA

Linux iostat监测IO状态

2010-03-1  |  13:13分类:Linux,技术细节  |  标签:Linux  |  22,421 views

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。

1. 基本使用

$iostat -d -k 1 10

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

$iostat -d -k 1 10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 39.29 21.14 1.44 441339807 29990031 sda1 0.00 0.00 0.00 1623 523 sda2 1.32 1.43 4.54 29834273 94827104 sda3 6.30 0.85 24.95 17816289 520725244 sda5 0.85 0.46 3.40 9543503 70970116 sda6 0.00 0.00 0.00 550 236 sda7 0.00 0.00 0.00 406 0 sda8 0.00 0.00 0.00 406 0 sda9 0.00 0.00 0.00 406 0 sda10 60.68 18.35 71.43 383002263 1490928140 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 327.55 5159.18 102.04 5056 100 sda1 0.00 0.00 0.00 0 0

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的总和)

2. -x 参数

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

iostat -d -x -k 1 10 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 1 10 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 1 |grep sda10 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda10 60.72 18.95 71.53 395637647 1493241908 sda10 299.02 4266.67 129.41 4352 132 sda10 483.84 4589.90 4117.17 4544 4076 sda10 218.00 3360.00 100.00 3360 100 sda10 546.00 8784.00 124.00 8784 124 sda10 827.00 13232.00 136.00 13232 136

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

iostat -d -x -k 1 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。磁盘响应正常,但是已经很繁忙了。

参考文献:

  1. Linux man iostat
  2. How Linux iostat computes its results
  3. Linux iostat

Linux iostat监测IO状态相关推荐

  1. Zabbix-3.0.X 监测服务器硬盘IO状态

    Zabbix-3.0监测服务器硬盘IO状态 一.环境准备 被监控主机已安装zabbix-agent,且zabbix-server能正常监控到zabbix-agent相关数据. 系统环境: Zabbix ...

  2. linux 实时监控系统IO状态和IO性能

    Snippet:2021-3-5 9:33 linux 实时监控系统IO状态和IO性能 问题概述:linux 实时监控系统IO状态和IO性能 方案细节 bash> iostat -c -k -p ...

  3. linux vmstat io,linux磁盤IO查看iostat,vmstat

    linux磁盤IO查看(iostat) ############## # #    操作 # ############## # iostat -x 1 10 Linux 2.6.18-92.el5xe ...

  4. Linux 性能监测

    Linux 性能监测:介绍 看了某某教程.读了某某手册,按照要求改改某某设置.系统设定.内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂.繁琐.长期的 工作,优化前需要监测.采集.测试 ...

  5. Linux 性能监测:介绍

    http://www.vpsee.com/2009/11/linux-system-performance-monitoring-introduction/ 看了某某教程.读了某某手册,按照要求改改某 ...

  6. 自动化运维 python 批量监控服务器_1、python自动化运维——监测服务器状态

    监测服务器状态 获取系统性能信息 1.CPU信息: Linux操作系统的CPU利用的几个部分: User Time;SystemTime;Wait IO;Idle psutil.cpu_times() ...

  7. linux 监控网络IO、磁盘、CPU、内存

    linux 监控网络IO.磁盘.CPU.内存 CPU:vmstat ,sar –u,top 磁盘IO:iostat –xd,sar –d,top 网络IO:iftop -n,ifstat,dstat ...

  8. Linux iostat和vmstat命令

    http://blog.csdn.net/tinyhare/article/details/7999829 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统 ...

  9. zabbix如何监控linux磁盘性能IO

    前提环境: perl和python,以及zabbix-agent已是可用状态 需要主要监控的指标: 1:每秒IO数,即iops或tps2:吞吐率3:平均IO尺寸,avgrq-sz4:IO等待队列长度, ...

最新文章

  1. Ubuntu 18.04+NVidia显卡+Anaconda3+Tensorflow-GPU安装、配置、测试(无需手动安装CUDA)
  2. SQLServer2008或SQLServer2008 R2没有智能提示解决方法
  3. Spring Boot2.x-14 使用Prometheus + Grafana 实现可视化的监控
  4. 面试项目亮点_怎样在面试中更好地介绍自己的项目经验?
  5. 【Linux】一步一步学Linux——sshd命令(177)
  6. AWS负载均衡器的健康检查机制
  7. Qt Example各例子演示功能说明
  8. Cloud一分钟 | 误删生产数据库血案,顺丰高级工程师被开除;阿里巴巴暂停美国云计算扩张?阿里云总裁正式回应:“不会减少投入”...
  9. WPF的几种布局方式
  10. 做出产品不难,做好产品必须高手
  11. cl.g4r.win index.php,win7 wamp环境配置Oracle数据库连接
  12. 室友转行软件测试,月薪1.4万,天天摸鱼没事干
  13. 目前最好的DirectShow分离器和解码器: LAV Filter
  14. Java三大主流框架
  15. win10c盘android,Win10系统C盘哪些文件可以删除?C盘无用文件都在哪?
  16. 超级玛丽跳 时间的优化
  17. Flash绘画与动画宝典
  18. 百度信息流是什么?哪些行业适合投放百度信息流?
  19. 《STL源码剖析》-- stl_construct.h
  20. python openpyxl 读取Excel,超简单案例python openpyxl 获取表格数据

热门文章

  1. php上个月的最后一天,在PHP中查找上个月的最后一天
  2. dvwa php sql,DVWA phpstudy安装
  3. linux 音频文件播放文件管理,linux dsp 播放音频文件
  4. php在html中生成option,php-如何为使用laravel表单生成器创建的select标签的选项指定HTML属性?...
  5. python集合类型的操作符_Python 语言学习 第一篇:数据类型(数字,集合,布尔类型,操作符)...
  6. oracle语句取字段前2位,oracle截取某一个字符之前或之后的值;substr();instr()
  7. trove mysql 镜像_Linux运维----03.制作trove-mysql5.7镜像
  8. 天津大学仁爱学院c语言期末考试题,天津大学《C语言程序设计》2016年7月考试期末大作业...
  9. mysql排序由低到高_MySQL入门系列(四)—— 排序查询
  10. 鸟哥linux私房菜 之 老段带你学习linux