网站的很多性能问题最终都会归结到IO头上,所以说理解iostat命令是非常有必要的。

小技巧:你知道iostat是从哪里得到IO相关信息的吗?使用strace命令能跟踪到答案:

shell> strace -eopen iostat

open("/proc/diskstats", O_RDONLY)

注:关于diskstats的说明,参见官方文档(field1 ~ field11)。

我最常用的iostat命令格式是:『iostat -dx 1』,意思是每隔一秒显示一次IO扩展信息。

shell> iostat -dx 1

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s

sda 0.18 37.71 0.65 2.63 50.18 322.08

avgrq-sz avgqu-sz await svctm %util

113.46 0.35 107.49 1.67 0.55

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s

sda 0.00 4208.00 0.00 165.00 0.00 163872.00

avgrq-sz avgqu-sz await svctm %util

993.16 119.54 1144.36 6.07 100.10

注:开头显示的是自系统启动开始的平均值,后面显示的是每段时间间隔里的平均值。

如果你的操作系统里没有iostat命令的话,除了从源代码安装,还可以使用下面方式:

Centos/Fedora的安装方式是:yum install sysstat

Debian/Ubuntu的安装方式是:aptitude install sysstat

介绍一下相关参数的含义:

rrqm/s:队列中每秒钟合并的读请求数量

wrqm/s:队列中每秒钟合并的写请求数量

r/s:每秒钟完成的读请求数量

w/s:每秒钟完成的写请求数量

rsec/s:每秒钟读取的扇区数量

wsec/s:每秒钟写入的扇区数量

avgrq-sz:平均请求数据的大小

avgqu-sz:平均请求队列的长度

await:平均每次请求的等待时间

svctm:平均每次请求的服务时间

util:设备的利用率

注:建议对照源代码来记忆这些参数都是如何计算出来的。

关于这些参数,相对重要的是后面几个,具体来说是:util,svctm,await,avgqu-sz:

util是设备的利用率。如果它接近100%,通常说明设备能力趋于饱和(并不绝对,比如设备有写缓存)。有时候可能会出现大于100%的情况,这多半是计算时四舍五入引起的,但如果是磁盘阵列等多盘系统,因为具有并发IO操作的能力,也会出现大于100%的情况。

svctm是平均每次请求的服务时间。从源代码里可以看出:(r/s+w/s)*(svctm/1000)=util。举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,说明系统出了问题。不过前面已经说过在磁盘阵列等多盘系统中util可能出现偏大的情况,所以svctm相应的也可能偏大。

await是平均每次请求的等待时间。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

avgqu-sz是平均请求队列的长度。毫无疑问,队列长度越短越好。

说明:svctm参数在未来某个版本的iostat会被删除,详见官方文档。

另外,有时候iostat会显示一些很离谱的结果,具体原因详见官方FAQ给出的解释。

原文:http://huoding.com/2011/07/13/91

linux io负载解决方法,看你的linux负载 io值相关推荐

  1. linux系统报警怎么办,常见Linux系统故障和解决方法

    常见Linux系统故障和解决方法 发布时间:2020-06-06 14:48:19 来源:亿速云 阅读:212 作者:Leah 栏目:云计算 这篇文章给大家分享的是常见的Linux系统故障和解决方法. ...

  2. Linux kernel panic解决方法

    Linux kernel panic解决方法 kernel panic错误表现 kernel panic 主要有以下几个出错提示: Kernel panic-not syncing fatal exc ...

  3. 【Linux学习笔记】3.Linux 忘记密码解决方法及远程登录

    前言 本章介绍Linux的忘记密码解决方法及远程登录. Linux 忘记密码解决方法 很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当 ...

  4. u盘运行linux失败,u盘安装linux失败的解决方法

    u盘安装linux失败的解决方法 发布时间:2020-04-27 11:35:55 来源:亿速云 阅读:197 作者:小新 今天小编给大家分享的是u盘安装linux失败的解决方法,相信很多人都不太了解 ...

  5. Linux permission denied解决方法

    Linux permission denied解决方法 参考文章: (1)Linux permission denied解决方法 (2)https://www.cnblogs.com/aarontho ...

  6. linux 文件系统 panic,Linux kernel panic解决方法

    Linux kernel panic解决方法 kernel panic错误表现 kernel panic 主要有以下几个出错提示: Kernel panic-not syncing fatal exc ...

  7. 登录网银显示服务器内部错误怎么办,网银提示无法大额转账?点击登录出现报错?解决方法看这里...

    原标题:网银提示无法大额转账?点击登录出现报错?解决方法看这里 为 帮助大家能够 更好地使用江西·农商银行网上银行 今天小编收集了一些 关于网上银行的常见问题 并详细为大家解答 1️⃣ 跨行转账(个人 ...

  8. linux svn 冲突解决方法

    linux svn 冲突解决方法 参考文章: (1)linux svn 冲突解决方法 (2)https://www.cnblogs.com/manhelp/p/11643851.html (3)htt ...

  9. linux程序无法启动,Linux无法启动解决方法[阮胜昌]

    2007-10-22 22:27 linux中修复GRUB 呵呵,最近2003系统老出问题,主要是防火墙导致很多聊天软件都用不了@|@哎,有时候甚至把MBR文件也弄没了没办法重新安装GRUB么???? ...

最新文章

  1. 计算各种形钢的重量用什么软件_造价常用工具不会用,30个常用工程算量工具免费送,速来领取收藏...
  2. “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛I 充分利用学习卡(粉)...
  3. 【编译原理】关于NFA和DFA-集合定义的探索
  4. 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )
  5. 拥有梦想只是一种智力,实现梦想才是一种能力
  6. Nginx的安全控制及SSL加密介绍
  7. 基础练习 字母图形 c语言
  8. 手机做服务器性能咋样,服务器性能不足 怎样才能逼出最强状态
  9. JavaFX 2.0布局窗格– HBox和VBox
  10. 【渝粤题库】陕西师范大学200341实变函数作业(高起本、专升本)
  11. git-osc自己定义控件之:CircleImageView
  12. 应用程序到偏好设置跳转 以及 应用程序之间的跳转
  13. 有效预防xss_4类防御XSS的有效方法
  14. 海康威视网络摄像头管理员登录密码重置
  15. 7.过渡案例:①进度条 ②小米图标翻转(父盒子一定要加初始值!!!)
  16. 计算机无法安装蓝牙驱动,W7系统蓝牙驱动安装失败的原因分析与解决方法
  17. 万能计算机在线应用,万能计算器在线使用技巧,快点学习吧
  18. CCCF“CNCC2017特邀报告”丘成桐:现代几何学与计算机科学
  19. c语言实现数据写入存储地址,c语言中通过指针将数值赋值到制定内存地址
  20. 小样本(少样本)目标检测概述(few-shot object detection)

热门文章

  1. linux桌面环境丢失,一个pycharm引起ubuntu桌面丢失的惨案
  2. python条件替换_Python中Numpy条件替换操作一例
  3. 钉钉产品介绍_钉钉上线安全教育新功能家校联动护航学生暑期安全
  4. sqlsever无法重新启动计算机,有关SqlServer 2008安装及卸载的一些问题,安装检测时显示重新启动计算机....
  5. java bitset 扩展_将java BitSet保存到DB
  6. 自己动手写CPU(1)五级流水线及CPU第一条指令ori
  7. 多媒体计算机在英语学科的应用,多媒体计算机应用于初中英语学科学习教学的研究...
  8. while循环里嵌套一个if_if-else嵌套太深?教你一个新手都能掌握的设计模式搞定!...
  9. DataTable的Merge\COPY\AcceptChange使用说明
  10. C语言程序设计--输入与输出