Linux监控命令之==>vmstat
一、使用说明
vmstat 可以对操作系统的内存信息、进程状态、CPU 活动、磁盘等信息进行监控,不足之处是无法对某个进程进行深入分析。
二、用法及参数说明
- -a:显示活跃和非活跃内存
- -f:显示从系统启动至今的fork数量
- -m:显示slabinfo
- -n:只在开始时显示一次各字段名称
- -s:显示内存相关统计信息及多种系统活动数量
- delay:刷新时间间隔。如果不指定,只显示一条结果
- count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
- -d:显示磁盘相关统计信息
- -p:显示指定磁盘分区统计信息
- -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
- -V:显示vmstat版本信息
- -p:显示指定磁盘分区统计信息
- -D:显示磁盘总体信息
三、结果说明
2表示两秒采集一次服务器状态,5表示采集5次。在实际运用过程中,一般会在一段时间内一直监控,不想监控直接结束就行了,如下:
- r 列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU。
- b 列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
- swpd 列表示虚拟内存已使用的大小,如果swap值不为0或者比较大,只要si、so的值长期为0,一般属于正常情况。
- free 列表示空闲的物理内存的大小,单位为KB。
- buff 列表示baffers cached内存大小,也就是缓冲大小,一般对块设备的读写才需要缓冲。
- cache 列表示page cached的内存大小,也就是缓存大小,一般作为文件系统进行缓冲,频繁访问的文件都会被缓存,如果cache 值非常大说明缓存文件比较多,如果此时io中的bi 比较小,说明文件系统效率比较好。
- si 列表示每秒从磁盘读入虚拟内存的大小,如果这个值长期大于0,表示物理内存不够用,需要增加系统内存。
- so 列表示每秒虚拟内存写入磁盘的大小,如果这个值长期大于0,也是表示物理内存不够用,需要增加系统内存。
- bi 列表示由块设备读入数据的总量,即读磁盘,单位kb/s。
- bo 列表示写到块设备数据的总量,即写磁盘,单位kb/s。如果bi+bo值过大,且wa值较大,则表示系统磁盘IO瓶颈。
- in 列表示每秒CPU的中断次数,包括时间中断。
- cs 列表示每秒产生的上下文切换次数,这两个值越大,则由内核消耗的CPU就越多。这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
- us 列表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗CPU时间越多,如果长期大于50%,则需要考虑优化程序或者算法。
- sy 列表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应小于80%,如果80%,则说明可能存在CPU瓶颈。
- id 列表示CPU处在空闲状态的时间百分比。
- wa 列表示I/O等待所占的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经验wa的参考值为20%,超过20%说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘出现瓶颈(主要是块操作)造成的。
重点参数:r,b,swpd,free,buff,cache,si,so,bi,bo
四、性能分析信息
1、IO/CPU/men连锁反应
- free急剧下降
- buff和cache被回收下降,但也无济于事
- 依旧需要使用大量swap交换分区swpd
- 等待进程数,b增多
- 读写IO,bi bo增多
- si so大于0开始从硬盘中读取
- cpu等待时间用于 IO等待,wa增加
2、内存不足
- 开始使用swpd,swpd不为0
- si so大于0开始从硬盘中读取
3、io瓶颈
- 读写IO,bi bo增多超过2000
- cpu等待时间用于 IO等待,wa增加 超过20
- sy 系统调用时间长,IO操作频繁会导致增加 >30%
- wa io等待时间长
- iowait% <20% 良好
- iowait% <35% 一般
- iowait% >50%
- 进一步使用iostat观察
4、CPU瓶颈:load,vmstat中r列
- 反应为CPU队列长度
- 一段时间内,CPU正在处理和等待CPU处理的进程数之和,直接反应了CPU的使用和申请情况。
- 理想的load average:核数*CPU数*0.7
- CPU个数:grep 'physical id' /proc/cpuinfo | sort -u
- 核数:grep 'core id' /proc/cpuinfo | sort -u | wc -l
- 超过这个值就说明已经是CPU瓶颈了
Linux监控命令之==>vmstat的更多相关文章
- linux性能监控命令(vmstat、sar、iostat、netstat)
1.常用系统命令Vmstat.sar.iostat.netstat.free.ps.top等 2.常用组合方式• 用vmstat.sar.iostat检测是否是CPU瓶颈• 用free.vmstat检 ...
- Linux监控命令整理(top,free,vmstat,iostat,mpstat,sar,netstat)
1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...
- Linux常用监控命令简介 – vmstat,ps,free,uptime 等
vmstat [-a] [-n] [delay [ count]]vmstat [-f] [-s] [-m]vmstat [-S unit]vmstat [-d]vmstat [-p disk par ...
- linux 监控命令
先总结下常用的一些监控工具: ##linux命令 w 系统负载 lsof -p pid 进程打开的文件 lsof -i:port 端口的运行情况 free -m 内存情况 vmstat 进程.内存.内 ...
- linux监控命令全覆盖(图文说明)
1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu.内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcis ...
- linux常用命令:vmstat 命令
vmstat 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体 情况进行统计,不足之处是无法对某个进程进 ...
- linux资源管理命令之-----vmstat
一.作用及语法: 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程.内存.I/O等系统整体运行状态. vmstat [options] [delay [count]] 二.vmstat各字段 ...
- Linux监控命令之==>sar
一.使用说明 sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率.内存使用状况.进程活动及 ...
- linux监控命令nc用法
一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程. -w <超时秒数> 设置等待连线的时间. -u 表示使用UDP协议 -z 使 ...
随机推荐
- ConditionalOnProperty的使用
时间 2018-02-23 标签 ConditionalOnPropert SpringBoot 栏目 Spring 原文 http://blog.csdn.net/u010002184/art ...
- php函数nl2br的反函数br2nl 将html中的br换行符转换为文本输入中的换行符
下面这几个方法将能够帮你解决这个问题. PHP版将html中的<br />换行符转换为文本框中的换行符: 代码如下: function br2nl($text){ return preg_ ...
- Git之协同开发
Github之协同开发 一.协同开发 1.引子:假如三个人共同开发同一份代码,每个人都各自安排了任务,当每个人都完成了一半的时候,提交不提交呢? 要提交,提交到dev吗,都上传了一半,这样回家拿出来的 ...
- Vue项目的痛点
前言 用Vue做项目,难免会有痛点,移动端还是PC端,我也总结了下关于问题: 进入详情页的传参问题. 服务器接口跨域 axios封装请求 UI库的按需加载 如何只在当前页面中覆盖ui库中组件的样式 定 ...
- 使用python开发WebService
使用python开发WebService 分类: web linux2009-03-30 11:36 6621人阅读 评论(1) 收藏 举报 webservicepythonsoapimportecl ...
- Spring 跨重定向请求传递数据
在处理完POST请求后, 通常来讲一个最佳实践就是执行一下重定向.除了其他的一些因素外,这样做能够防止用户点击浏览器的刷新按钮或后退箭头时,客户端重新执行危险的POST请求. 在控制器方法返回的视图名 ...
- JAVA笔记23-IO流(1)
一.流的概念和分类 JAVA程序中,对于数据的输入.输出操作以“流”(stream)方式进行:J2SDK提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据. java ...
- spark的accumulator值保存在哪里?
答案:保存在driver端.因此需要对收集的信息的规模要加以控制,不宜过大.避免 driver端的outofmemory问题!!!
- Python Number(数字) Ⅰ
Python Number(数字) Python Number 数据类型http://www.xuanhe.net/用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的 ...
- UNIX环境C - 系统信号
一.信号的概念 信号就是一种软中断,进程与进程之间信号的传递,都是通过内核来当做中转站的,不能直接传递信号. 二.信号的分类(128位信号,不过可用信号就1~64除去32与33) 1.不可靠信号(SI ...