vmstat : virtual memory

statistics(虚拟内存统计),vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况。这个命令在Linux/Unix系统都支持,相对于top命令,vmstat可以看到整个CPU,memory,

IO的使用情况,而不是单单看到各个进程的资源使用率.

(并不是说vmstat命令比top好,不用场景的应用不一样而已)。

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔,单位是秒;第二个参数是采样的次数,如:

root@ubuntu:~# vmstat2 1

procs   -----------memory-------------------

---swap-- -----io---- -system------cpu----

r  b

swpd

free       buff

cache

si  so

bi

bo      in

cs

us sy  id wa

1 0

0  3498472 315836

3819540

0   0

0

1         2

0

0  0

100  0

2表示每2秒采集一次服务器状态,1表示只采集一次。

在实际应用过程中,我们会在一段时间内一直监控,不想监控的时候直接结束vmstat,例如:

root@ubuntu:~# vmstat 2

procs-----------memory---------- ---swap-------io----

-system-- ----cpu----

r b

swpd

free

buff

cache     si

so

bi   bo

in

cs  us

sy

id   wa

1 0

0    3499840

315836 3819660

0   0

0

1    2

0

0  0

100   0

0 0

0    3499584

315836

3819660

0   0

0

0   88

158

0  0

100   0

0 0

0    3499708

315836

3819660

0   0

0

2   86

162

0  0

100   0

0 0

0    3499708

315836

3819660

0   0

0

10  81

151

0  0

100   0

1

0

0   3499732

315836

3819660

0

0    0

2

83  154

0

0 100

0

上面表示每2秒采集一次数据,一直采集,直到手动结束,上面采集了5次就结束了

接下来分析每一个字段返回值:

PROCS

r : (run)

CPU运行队列,cpu在单位时间内所能处理的进程数越高,那它的性能应该就越高。但是关于这个负载,网上很说法,有的说r值不应该超过cpu的核心数量;有的说r值不应该超过cpu核心数量的2倍;有的说不能超过cpu核心数量的3倍。其实每种说法都是对的,都是担心cpu承受不住,但上面说法不完全正确。关于这个数,我们应该根据当前的应用系统来判断。最主要的判断是cpu在达到一定程度负载的时候,系统能够运行良好。如果cpu的负载都超过核心数的好几倍了但是软件还依然运行流畅,那这个也是可以有的。

b :

(block)表示阻塞的进程,当运行队列r值的数量逐渐增加,达到了一定值的时候,进程就会被移动到b里面。理论上讲,blocked的值会一直增加,直到系统崩溃。

MEMORY

swpd : (swap

disk)虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是内存泄露的原因,那么该升级内存或者把耗内存的任务迁移到其他机器​

内存泄露:用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。

内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。

free

:空闲的物理内存的大小

buff :

linux/unix系统是用来存储目录里面有什么内容权限等 的缓存

cache

:直接用来记忆我们打开的文件,给文件做缓冲,这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的能力,当程序使用内存时,buffer/cached会很快地被使用​

1.A buffer is something that has yet to be "written" to

disk.

2.A cache is something that has been "read" from the disk and

stored for later use.

Cache:由于cpu的速度远高于主内存,cpu直接从内存中存取数据要等待一定的时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2

Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

SWAP

si : (swap

in) 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存的进程解决掉.

so : (swap

out)每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。。。

I/O

bi : (block

in)块设备每秒接受的块数量(单位:KB/秒),这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小为1024byte,上面例子中没有io操作,

bo : (block

out) 块设备每秒发送的块数量(单位:KB/秒),例如我们读取文件,bo就要大于0,bi和bo一般都很接近0,不然就是IO过于频繁,需要调整。​

块设备:系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘、软盘、CD

ROM、闪存等。他们都是以安装文件系统的方式使用的,这也是块设备一般的访问方式。

字符设备:字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备,反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。

SYSTEM

in :

(interrupt) 每秒CPU的中断次数,包括中断时间。

cs : (context

switch) 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值越小越好,太大了,要考虑调低线程或者进程的数目。例如在web服务器中,做性能的时候,常常会进行几千甚至上万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程就是比较合适的值了。系统调用也是,每次调用函数,我们的代码就会进入内核空间,导致上下文切换,这个很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正事的时间少,CPU没有充分利用,是不可取的。

CPU

us : (user

time) 用户CPU时间,

sy : (system

time)系统时间

id :

(idle) 空闲CPU时间

wa : (wait

time) 等待IO 的CPU时间,wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严

如果一个CPU被充分利用的话,利用率分类之间均衡的比例应该是:

user time :65%-70%

system time :30%-35%

idle time :0%-5%

一般情况 us+sy+id=100

通过vmstat识别CPU瓶颈

如果r经常大于3,且id经常少于40,表示CPU的负荷很重。

如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu

us),系统则面临着cpu资源的短缺。

当cpu出现瓶颈的解决办法

1. 最简单的就是增加CPU个数、

2. 通过调整任务时间,如大任务放到系统不繁忙的情况下执行,进而平衡系统

3. 调整已有任务的优先级

首先表明,vmstat中的cpu的度量是百分比,当us+sy的值接近100时,表示cpu正在接近满负荷工作,cpu满负荷工作并不能说明什么,Unix总是试图尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定cpu瓶颈的还是r值。

通过vmstat识别IO瓶颈

如果disk经常不等于0,且在b中的队列大于3,表示io性能不好

linux vmstat io,Linux性能监控2(vmstat)相关推荐

  1. Unix/Linux 磁盘 I/O 性能监控命令

    2019独角兽企业重金招聘Python工程师标准>>> 怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: Top可以看到的cpu信息有: Tasks: 29 to ...

  2. linux Centos下搭建性能监控Spotlight on Unix

    公司要做压力测试,有Linux服务器一台,系统Centos6.5,为了直观的展示系统性能,更好的去分析服务器,故要搭建一个监控.闲言休讲,直奔主题. 首先,Linux服务器一台:系统Centos6.5 ...

  3. linux vmstat io,linux磁盤IO查看iostat,vmstat

    linux磁盤IO查看(iostat) ############## # #    操作 # ############## # iostat -x 1 10 Linux 2.6.18-92.el5xe ...

  4. Linux常见的一些性能监控命令

    文章目录 全局监控 top CPU监控 uptime 内存监控 free vmstat 磁盘监控 df iostat 网络监控 netstat 进程监控 ps lsof 在我们使用Linux进行开发. ...

  5. linux如何脚本监控tps,对Linux进行详细的性能监控的方法

    这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和 ...

  6. linux 总数 进程_linux性能监控之 top 家族(1)

    点击查看>> 2020年第一期<接口自动化由浅入深>课程,4月5号开学! top家族之一(TOP) 在linux上敲top就能看到一大坨监控命令,眼花缭乱 TOP命令是Linu ...

  7. 推荐几个Linux命令行下性能监控小工具

    原文链接 在Linux中,CPU,内存等系统状态可以通过top命令查看,或者用图形界面的工具,如gnome-system-monitor.但是,有时候,想知道更详细的信息,比如说进程树之类的,网络具体 ...

  8. Linux服务器集群性能监控之Performance Co-Pilot(PCP)部署

    在部署PCP时,我用到了两台cent os 7虚拟机. 1.官方安装文档 http://pcp.io/docs/guide.html 2.官方用户指引 http://pcp.io/doc/pcp-us ...

  9. 漫谈linux文件io,Linux文件IO与通用块层的请求合并

    本文参考https://mp.weixin.qq.com/s/Imt4BW-zoHPpcOpcKZs_AQ, 公众号"Linux阅码场" 请求合并就是将进程内或者进程间产生的在物理 ...

最新文章

  1. reactor官方文档译文(2)Reactor-core模块
  2. 王道操作系统考研笔记——2.1.6 处理机调度的概念和层次
  3. 新的一年到来了,我要做的第一件事是放弃……
  4. jenkins 运行 shell脚本报错,Failed to restart tomcat.service: Interactive authentication required
  5. [深度学习-原理篇]什么是循环神经网络RNN与LSTM
  6. 很经典的独白,搞网络的童鞋们,你们懂得
  7. 【Flink】Flink 的状态描述符 StateDescriptor operator state key state
  8. ubuntu下Xmodmap映射Esc和Ctrl_L
  9. IDC:2021年云上数据量超过传统数据中心,All in Cloud是趋势
  10. SAPUI5教程——URLHelper的使用技巧
  11. 破解入门(八)-----算法分析与注册机编写
  12. 走近冰球运动·体育项目
  13. in field list is ambiguous 解决方法
  14. 小学生数量成为楼市风向标?
  15. SpringCloud 09 - Gateway 网关
  16. GameBuilder开发游戏应用系列之60行代码实现FlappyBird
  17. 魔方二代 php代码还原
  18. J2EE架构师[转]
  19. 6.stm32 低功耗设计--总结
  20. 史上最强css、html总结,看完涨薪不再是梦

热门文章

  1. 液晶电视英文linux使用教程,创维电视都是英文怎么看 创维电视机菜单显示英文的怎么调成中文?...
  2. 2017年天猫双11潮流盛典揭幕 纽约时装周高调宣布加入
  3. 【原创】开源,手中的牌怎么打
  4. Echarts 贴花图案
  5. 手游卡牌 装备,宝物
  6. 微信小程序js 字符串截取
  7. “要疯”六年,安踏与年轻人疯出“新宇宙”
  8. java滑块_Java Swing JSlider滑块的实现示例
  9. latex设置itemize形式以及多层itemize
  10. 每天一个设计模式之装饰者模式