性能监控命令vmstat详解【杭州多测师】【杭州多测师_王sir】
vmstat命令:用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。
vmstat 命令的输出
vmstat 1 10
实例解读一:
CPU状态的监控指标主要有以下几个参数获得:
r:在运行队列中等待的进程数
b:在等待IO的进程数
cs:每秒的上下文切换的次数
us:用户进程使用的CPU时间(%)
sy:系统进程使用的CPU时间(%)
id:CPU空闲时间(%)
wa:等待IO所消耗的CPU时间(%)
由上面的命令输出中可以看到:
1. IO等待的CPU时间(wa)非常高,而实际运行用户和系统进程的CPU时间却不高
2. 存在等待IO的进程(b>0)
由此可以得出结论:系统目前CPU使用率高是由于IO等待所造成的,并非由于CPU资源不足。用户应检查系统中正在进行IO操作的进程,并进行调整和优化。
正常的CPU状态图,可以与上图作比较:
实例解读二:大量的算术运算
本程序会进入一个死循环,不断的进行求平方根的操作,模拟大量的算术运算的环境.
root@debian6:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 772300 42420 175356 0 31 5 138 22 14 0 0 99 0
1 0 0 772292 42420 175356 0 0 0 0 45 22 5 0 95 0
1 0 0 772284 42420 175356 0 0 0 0 276 15 100 0 0 0
1 0 0 772284 42420 175356 0 0 0 0 298 12 100 0 0 0
1 0 0 772284 42420 175356 0 0 0 0 273 11 100 0 0 0
1 0 0 772284 42420 175356 0 0 0 0 278 16 100 0 0 0
由于不断地在做算术运算,从上面可以看出:
1. r表示在运行队列中等待的进程数,上面的数据表示r=1,一直有进程在等待,
2. in表示每秒的中断数,包括时钟中断,运行队列中有等待的进程(看参数r的值),中断数in就上来了
3. us表示用户进程使用的cpu时间,随着r=1,用户的cpu占用时间直接达到了100%
4. id表示cpu的空闲时间,一开始的时候id很高,达到95%,后来程序开始跑,cpu一直处于繁忙状态(看参数r,us的值),id就一直为0,等程序终止,id就是上去了
实例解读三:大量的系统调用
本脚本会进入一个死循环,不断的执行cd命令,从而模拟大量系统调用的环境
root@debian6:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 772300 42500 175364 0 30 5 136 22 14 0 0 99 0
0 0 0 772300 42500 175364 0 0 0 0 27 14 0 0 100 0
1 0 0 772220 42500 175364 0 0 0 0 213 2482 6 70 24 0
1 0 0 772204 42500 175364 0 0 0 0 283 3298 8 92 0 0
1 0 0 772204 42500 175364 0 0 0 0 281 3343 5 95 0 0
结论:随着程序不断调用cd命令,运行队列有等待的进程r(看参数r),每秒的中断数in(看参数in),下文切换的次数cs骤然提高(看参数cs),系统占用的cpu时间sy(看参数sy)也不断提高,cpu空闲时间id(看参数id)一直为0。
当程序终止的时候,r,in,cs,sy数据都下来了,id上去了,表示系统已经空闲下来了。
实例解读四:大量的io操作
我们用dd命令,从/dev/zero读数据,写入到/tmp/data文件中,如下:
dd if=/dev/zero of=/tmp/data bs=1M count=1000
root@debian6:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 772176 42564 175352 0 30 5 134 23 14 0 0 99 0
0 0 0 772176 42564 175352 0 0 0 0 35 15 0 1 99 0
1 0 0 687220 42564 257976 0 0 4 0 181 23 0 55 45 0
root@debian6:~# dd if=/dev/zero of=/mnt/date1 bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 6.31404 s, 166 MB/s
root@debian6:~# dd if=/dev/zero of=/mnt/data1 bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 2.19338 s, 478 MB/s
1. bo写数据到磁盘的速率,bi是从磁盘读的速度
2. dd不断的向磁盘写入数据,所以bo的值会骤然提高,而cpu的wait数值也变高,说明由于大量的IO操作,系统的瓶径出现IO设备上
3. 由于对文件系统的写入操作,cache也从175352KB提高到了952236KB,又由于大量的写中断调用,in的值也从35提高到638,上下文切换cs的值从23到了611
接下来我们还用dd命令,这回从/tmp/data文件读,写到/dev/null文件中,如下:
dd if=/tmp/test1 of=/dev/null bs=1M
root@debian6:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 15568 11444 972748 0 25 11 135 23 14 0 0 100 0
0 0 0 15568 11444 972760 0 0 0 0 16 13 0 0 100 0
1 1 0 14692 11444 973084 0 0 46396 0 432 687 0 13 57 30
1 1 0 14568 11444 973228 0 0 129152 0 1103 1917 0 22 0 78
root@debian6:~# dd if=/mnt/data1 of=/dev/null bs=1M
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 5.1614 s, 203 MB/s
1. dd不断的从/tmp/data磁盘文件中读取数据,所以bi的值会骤然变高,最后我们看到b(在等待io的进程)也由0变成了1甚至到2
2. dd读的时候,in中断数和cs上下文切换很高,还有就是等待IO所消耗的cpu时间wa相当高
3. 因此,这时的性能瓶颈在读上面,有程序在发生大量读的请求。
实例解读五:大量的占用内存
本程序会不断分配内存,直到系统崩溃
root@debian6:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 880944 70656 51692 0 0 125 13 27 35 0 2 97 1
0 0 0 880944 70656 51692 0 0 0 0 17 12 0 0 100 0
1 0 0 733344 70656 51692 0 0 0 0 259 339 2 52 46 0
1 0 0 312240 70656 51692 0 0 0 0 484 674 2 98 0 0
1 0 0 152776 70656 51692 0 0 0 0 417 469 0 100 0 0
0 2 0 12396 68868 45748 0 0 0 0 410 444 1 97 0 2
1 0 652 605960 60932 39120 0 908 0 908 141 130 0 34 0 66
0 0 524 903632 60932 39136 0 0 0 0 32 14 0 3 97 0
0 0 524 903632 60932 39136 0 0 0 0 13 8 0 0 100 0
0 0 524 903632 60932 39136 0 0 0 0 13 9 0 0 100 0
0 0 524 903632 60932 39136 32 0 32 0 14 12 0 0 99 1
结论:我们看到cache迅速减少,而swpd迅速增加,这是因为系统为了分配给新的程序,而从cache(文件系统缓存)回收空间,当空间依然不足时,会用到swap空间.
而于此同时,si/so也会增加,尤其是so,而swap属于磁盘空间,所以bo也会增加
性能监控命令vmstat详解【杭州多测师】【杭州多测师_王sir】相关推荐
- 【JVM】之监控命令-jstat详解
目录 jstat -gc jstat -gcutil jstat -gcnew jstat -gcold jstat -gc 1.jps获取进程号(也可以是用ps -ef 或 ps -aux) 2.j ...
- linux下top命令参数详解
linux下top命令参数详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法. 内存信息.内容如下: ...
- 强大的strace命令用法详解
强大的strace命令用法详解_Linux教程_Linux公社-Linux系统门户网站 strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间 ...
- 面试官都在问 | Linux命令mpstat详解
面试官都在问 | Linux命令mpstat详解 1. mpstat的基本用法 mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询 ...
- 网络性能评估工具Iperf详解(可测丢包率)
原文链接:安全运维之:网络性能评估工具Iperf详解:技术成就梦想51CTO-中国领先的IT技术网站 参考博文:Install Iperf and Test Network Throughput,Sp ...
- dos下的edit命令使用详解
dos下的edit命令使用详解 来源:网络 作者:未知 edit命令是一个简单的编辑软件,我们经常用它来编辑一些程序和批处理文件. 比如,我想在c盘根目录下编辑一个简单的批处理文件,要求无论当前盘和当 ...
- mysql语句性能开销检测profiling详解
转载自 mysql语句性能开销检测profiling详解 之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是否优秀,但不能查看具体的涉及 ...
- 六个 Linux性能监控命令行工具
六个 Linux性能监控命令行工具 1.htop - http://htop.sourceforge.net/ 一个可以让用户与之交互的进程查看器.作为文本模式的应用程序,主要用于控制台或 X 终端 ...
- linux中which命令详解,Linux下which命令使用详解(转)
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...
最新文章
- ASP.NET页面之间传递值的几种方式
- 唐山一个葬礼上的豪华车队
- “中国式招标”的一些趣闻
- duilib入门简明教程 -- VS环境配置(2) (转)
- 中国三大轴承厂是 哪三家?
- junit initializationError
- JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持
- sublime主题安装
- Matlab——图像缩放(插值法)
- [转]nginx+php-fpm.sock时504,502错误解决办法
- 三分钟上手openldap帐号系统
- django安装教程
- oracle建表默认now,oracle建表脚本当中使用默认值_oracle
- 嵌入式驱动工程师开发学习路线
- PHP响应式营销型万能H5建站系统源码
- 【清华大学陈渝】第三章 计算机体系结构
- SuperMemo概念初识(摘录)
- 设计师必备!超好用的MAC电脑网页设计师软件
- 过渡篇(1),初步了解Java泛型
- 计算机网络技术职称论文,计算机职称论文范文(2)