pidstat 命令有点像 top 命令中的为每个 CPU 统计信息功能,但是它是以不断滚动更新的方式打印信息,而不是每次清屏打印 。这个对于观察随时间变化的模式很有用,同时把你看到的信息(复制粘贴)记到你的调查记录中 。
上面的例子可以看出是 2 个 java 进程在消耗 CPU 。%CPU 列是所有 CPU 的使用率;1591% 是说明这个 java 进程消耗了几乎 16 个 CPU 核 。
6. iostat -xz 1$ iostat -xz 1Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU)avg-cpu: %user %nice %system %iowait %steal %idle 73.96 0.00 3.73 0.03 0.06 22.21Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %utilxvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03[...]^C这个工具对于理解块设备(比如磁盘)很有用,展示了请求负载和性能数据 。具体的数据看下面字段的解释:
- r/s, w/s, rkB/s, wkB/s:这些表示设备上每秒钟的读写次数和读写的字节数(单位是 k 字节) 。这些可以看出设备的负载情况 。性能问题可能就是简单的因为大量的文件加载请求 。
- await:I/O 等待的平均时间(单位是毫秒) 。这是应用程序所等待的时间,包含了等待队列中的时间和被调度服务的时间 。过大的平均等待时间就预示着设备超负荷了或者说设备有问题了 。
- avgqu-sz:设备上请求的平均数 。数值大于 1 可能表示设备饱和了(虽然设备通常都是可以支持并行请求的,特别是在背后挂了多个磁盘的虚拟设备) 。
- %util:设备利用率 。是使用率的百分数,展示每秒钟设备工作的时间 。这个数值大于 60% 则会导致性能很低(可以在 await 中看),当然这也取决于设备特点 。这个数值接近 100% 则表示设备饱和了 。
请记住,磁盘 I/O 性能低不一定是应用程序的问题 。许多技术通常都被用来实现异步执行 I/O,所以应用程序不会直接阻塞和承受延时(比如:预读取和写缓冲技术) 。
推荐阅读
- 建议收藏 一文深度讲解JVM 内存分析工具 MAT及实践
- 中药感冒药治疗感冒效果如何
- 怀孕初期如何提前补充叶酸
- 三国里的荀彧如何评价 荀彧在曹操中的地位
- 洛神花茶减肥效果如何,如何冲泡洛神花茶
- 龙井茶如何泡,西湖春茶龙井茶明前特级龙井茶
- 如何防范计算机病毒
- 普洱曼松贡茶如何喝,普洱名品
- 太上皇自称朕吗 皇上自称朕,太上皇如何自称
- 成吉思汗死后他的妃嫔如何 成吉思汗抢女人
