性能分析之pidstat新版本的%wait和mpstat的%iowait、top的wa
前几天在微信群中跟一个人讨论问题,其中提到了pidstat中的%wait到底是不是等待io的。
当时我有一些含糊的是pidstat中似乎没看过有wait这个计数器。但是基于top中的wa和mpstat中的%iowait的多年判断经验。我当时说是在等io的。
当时我还说,如果我判断错了,下次见面,我请他喝花酒(不是你想的花酒,
)。 为了验证自己的说法,自己上服务器看了一下。一看不要紧,结果没wait这个计数器!!
这下蒙了,为什么我没这个计数器呢?
但是这个问问题的同学界面是这样的。
多出来一个wait。而这个wait确实是在pidstat的-u的CPU参数中输出的。
虽然看到的是pidstat输出的CPU的wait,但是却和mpstat的iowait以及top中的wa对应不上。
从上图可以看出,mpstat输出的%iowait并没有值,但是pidstat中的%wait却有比较高的值。在同一时间输出的数据相差如此之大,确实有蹊跷。
于是,我问他的环境中的版本是什么。他说是sysstat11.5.5的版本可以看到。我输出自己环境里的pidstat是10.1.5,在Centos8和7中如果用yum安装,都没这么高的版本。
分析过程
没有办法,本着对技术的偏执,我觉得要搞清楚有没有解释错!
来看一下分析过程。
计数器解释
要想了解计数器值为什么对不上,首先得先知道他们是不是同样的含义。
因为几个命令的参数值不一样,而top和mpstat也用了多年。那就先检查一下这几个计数器的帮助是怎么定义的。 top中的wa是这样解释的。
wa, IO-wait : time waiting for I/O completion
mpstat中的iowait是这样的。
%iowait
Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.
这也是我为什么判断CPU中的wait是等IO的原因,因为上面两个计数器都明确说了等IO。 但是!!!我的错误判断的转折点来了。 我装了最新版本的sysstat之后,看到pidstat中的wait是这样解释的。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 5分钟学会vue中的路由守卫
- 小白学PyTorch | 9 tensor数据结构与存储结构
- 科研SCI论文图片基础知识详解
- vue3.0的异步更新原理
- 小白学PyTorch | 10 pytorch常见运算详解
- vuex的基础知识点
- 小白学PyTorch | 11 MobileNet详解及PyTorch实现
- 小白学PyTorch | 12 SENet详解及PyTorch实现
- 重拾前端技能为你的职业前程保驾护航
- input切换显示与隐藏,歘~
- 小白学PyTorch | 13 EfficientNet详解及PyTorch实现
- Java 比较两个字符串内容是否相等
- 前端模块化发展史
- 前端性能优化
- 突击并发编程JUC系列-原子更新AtomicLong