大家好,感谢邀请,今天来为大家分享一下深入剖析虚拟内存状态:vmstat实用指南的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
交换状态、IO读写状态。这个命令是我最喜欢查看Linux/Unix 的命令。首先,它受到Linux/Unix的支持。其次,与top相比,我可以看到整个机器。
CPU、内存、IO使用情况,而不是只看每个进程的CPU使用情况和内存使用情况(使用场景不同)。
一般vmstat工具的使用是通过两个数值参数来完成的。第一个参数为采样间隔数,单位为秒,第二个参数为采样次数,如:
root@ubuntu:~# vmstat21
procs --------------内存---------- ---swap-- -----io---- -system-- ----cpu-- --
r b swpd 空闲buff 缓存si so bi boincs 我们sy id wa
10034984723158363819540000120001000
2表示每两秒收集一次服务器状态,1表示仅收集一次。
事实上,在申请过程中,我们会持续监控一段时间。如果不想监控,结束vmstat即可,例如:
root@ubuntu:~# vmstat2
procs --------------内存---------- ---swap-- -----io---- -system-- ----cpu-- --
r b swpd 空闲buff 缓存si so bi boincs 我们sy id wa
10034998403158363819660000120001000
00034995843158363819660000088158001000
00034997083158363819660000286162001000
000349970831583638196600001081151001000
10034997323158363819660000283154001000
这意味着vmstat每2秒收集一次数据,并一直收集直到我结束程序。收集了5次数据后,我结束了程序。
好了,命令介绍完毕,我们开始实际解释一下各个参数的含义。
r代表运行队列(即实际分配CPU的进程数)。我测试的服务器目前CPU比较空闲,没有程序在运行。当该值超过CPU数量时,就会出现CPU瓶颈。这也与top的负载有关。一般负载超过3就比较高,超过5就偏高,超过10就异常,服务器的状态很危险。 top的负载与每秒运行队列的负载类似。如果运行队列太大,则意味着你的CPU非常繁忙,这通常会导致CPU使用率很高。
b 代表阻塞进程。这个我就不多说了。大家都知道进程被阻塞了。
swpd 虚拟内存的已用大小。如果大于0,说明你的机器物理内存不足。如果不是程序内存泄漏的原因,那么就应该升级内存或者将消耗内存的任务迁移到其他机器上。
可用物理内存的大小。我的机器内存总共8G,剩余3415M。
buffLinux/Unix系统用于缓存目录中的内容、权限等。我的机器占用了300M左右。
Cachecache直接用来记住我们打开的文件并缓存起来。我的机器占用了300M左右(这就是Linux/Unix的巧妙之处,它利用部分空闲物理内存来缓存文件和目录,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会尽快使用)。
si 每秒从磁盘读取虚拟内存的大小。如果该值大于0,则说明物理内存不够或者内存泄漏。你需要找到消耗内存的进程并解决它。我的机器有足够的内存,一切正常。
so每秒写入磁盘的虚拟内存的大小,如果这个值大于0,则同上。
双块设备每秒接收的块数。这里的块设备是指系统上的所有磁盘和其他块设备。默认块大小为1024 字节。我在这台机器上没有IO操作,所以一直是0,但是我一直在处理复制大量数据(2-3T)的机器上,看到可以达到140000/s,而且磁盘写入速度几乎每秒140M。
bo块设备每秒发送的块数。比如我们读取文件时,bo必须大于0,bi和bo一般接近0,否则IO太频繁,需要调整。
in每秒CPU中断数,包括时间中断
cs 每秒上下文切换的次数。例如,当我们调用系统函数时,需要进行上下文切换、线程切换、进程上下文切换。该值越小越好。如果太大,请考虑减少线程或进程的数量。例如,在apache、nginx等Web服务器中,我们在做性能测试时,通常会进行几千甚至几万的并发测试。选择Web服务器的进程可以根据进程或线程的峰值来降低,压力测试直到cs达到一个比较小的值,进程和线程数是一个比较合适的值。系统调用也是如此。每次调用系统函数时,我们的代码都会进入内核空间,引起上下文切换。这是非常消耗资源的,我们应该尽量避免频繁调用系统函数。过多的上下文切换意味着你的大部分CPU都浪费在上下文切换上,导致CPU做正经工作的时间减少,CPU没有得到充分利用,这是不可取的。
us用户CPU时间,我曾经在一台频繁执行加密和解密的服务器上。可以看到us已经接近100了,r运行队列达到了80(机器正在做压力测试,性能较差)。
sy系统CPU时间。如果太高,说明系统调用时间较长,比如频繁的IO操作。
【深入剖析虚拟内存状态:vmstat实用指南】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
VMstat 真是一把利器啊,监控系统资源太棒了!
有18位网友表示赞同!
学习Linux一直想弄明白 VMstat 的用法,今天来试试看。
有18位网友表示赞同!
经常会用VMstat来看 CPU、内存等的占用情况,很有帮助!
有8位网友表示赞同!
这篇文章介绍的 VMstat 命令很详细,理解起来比较容易。
有13位网友表示赞同!
之前没注意过 VMstat 这种工具,现在要好好学习一下了。
有12位网友表示赞同!
想知道如何使用 VMstat 来分析系统的性能瓶颈?
有10位网友表示赞同!
VMstat 的输出结果看着还是有点懵懂,希望能有更直观的解释。
有13位网友表示赞同!
文章里提到的案例很有用,让我对 VMstat 有了更深的理解。
有10位网友表示赞同!
想了解一下如何在不同平台上使用 VMstat 命令。
有12位网友表示赞同!
学习 Linux 相关命令真的有很多东西可以探索!
有14位网友表示赞同!
希望能看到更多关于 VMstat 的高级用法介绍。
有19位网友表示赞同!
用 VMstat 可以查看系统负载吗?有没有其他工具更方便?
有20位网友表示赞同!
想了解一下哪些关键指标在使用 VMstat 时需要特别关注。
有15位网友表示赞同!
文章内容简洁易懂,适合入门学习的同学!
有19位网友表示赞同!
对于 Linux 开发者来说,掌握 VMstat 是必不可少的技能。
有10位网友表示赞同!
学习完之后可以实战操作一下,巩固理解!
有12位网友表示赞同!
VMstat 真是个好工具,可以让系统管理变得更加高效。
有12位网友表示赞同!
希望以后的文章能介绍更多关于 Linux 系统监控的信息!
有6位网友表示赞同!
学习 VMstat 的过程中遇到了一些问题,希望能得到解答。
有20位网友表示赞同!