• VMstat命令详解


    vmstat可以对操作系统的内存信息、进程状态、 CPU 活动、磁盘等信息进行监控, 不足之处是无法对某个进程进行深入分析。

    [root@besttest ~]# vmstat 2 1
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 760648  11708  93028    0    0     9     1   16   18  0  0 100  0  0    

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

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

    [sdk_test@ssdk1 server]$ vmstat 2
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     0  0      0 168416 252324 12417400    0    0     2     8    0    1  0  0 99  0  0    
     0  0      0 169144 252324 12417484    0    0     0     0 1127 1277  1  1 99  0  0    
     0  0      0 170632 252324 12417596    0    0     0    28 1246 1383  1  1 98  0  0    
     0  0      0 169556 252324 12417700    0    0     0    20 1446 1565  1  0 98  0  0    
     0  0      0 169928 252324 12417828    0    0     0    24 1286 1469  1  1 98  0  0    
     0  0      0 170168 252324 12417928    0    0     0    64 1328 1513  1  1 98  0  0    

    这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了6次数据我就结束了程序

    
    

    好了,命令介绍完毕,现在开始实战讲解每个参数的意思

    procs
     R 列表示运行和等待 CPU 时间片的进程数, 这个值如果长期大于系统 CPU 个数, 说明CPU 不足,需要增加 CPU。
     B 列表示在等待资源的进程数,比如正在等待 I/O 或者内存交换等。


    memory
     swpd 列表示切换到内存交换区的内存大小(单位 KB),通俗讲就是虚拟内存的大小。如果 swap 值不为 0 或者比较大, 只要 si、 so 的值长期为 0.这种情况一般属于正常情况。
     free 列表示当前空闲的物理内存(单位 KB)。
     Buff列表示 baffers cached 内存大小,也就是缓冲大小,一般对块设备的读写才需要缓冲。
     Cache 列表示 page cached 的内存大小, 也就是缓存大小, 一般作为文件系统进行缓冲,频繁访问的文件都会被缓存,如果 cache 值非常大说明缓存文件比较多,如果此时 io中的 bi 比较小,说明文件系统效率比较好。

    swap
     Si 列表示由磁盘调入内存,也就是内存进入内存交换区的内存大小。
     so 列表示由内存进入磁盘,也就是有内存交换区进入内存的内存大小。
     一般情况下, si、 so 的值都为 0,如果 si、 so 的值长期不为 0,则说明系统内存不足,需要增加系统内存。

     io
     bi 列表示由块设备读入数据的总量,即读磁盘,单位 kb/s。
     bo 列表示写到块设备数据的总量,即写磁盘,单位 kb/s。
     如果 bi+bo 值过大,且 wa 值较大,则表示系统磁盘 IO 瓶颈。


     system
     in 列表示某一时间间隔内观测到的每秒设备中断数。
     cs 列表示每秒产生的上下文切换次数。这 2 个值越大,则由内核消耗的 CPU 就越多。

     cpu
     us 列表示用户进程消耗的 CPU 时间百分比, us 值越高, 说明用户进程消耗 cpu 时间越多,如果长期大于 50%,则需要考虑优化程序或者算法。
     sy 列表示系统内核进程消耗的 CPU 时间百分比,一般来说 us+sy 应该小于 80%,如果大于 80%,说明可能处女座 CPU 瓶颈。
     id 列表示 CPU 处在空闲状态的时间百分比。
     wa 列表示 IP 等待所占的 CPU 时间百分比, wa 值越高,说明 I/O 等待越严重,根据经验 wa 的参考值为 20%,如果超过 20%,说明 I/O 等待严重,引起 I/O 等待的原因可能是磁盘大量随机读写造成的, 也可能是磁盘或者此哦按监控器的贷款瓶颈(主要是块操作)造成的。
    综上所述, 如果评估 CPU, 需要重点关注 procs 项的 r 列值和 CPU 项的 us、 sy、 wa 列的值。







  • 相关阅读:
    .NET Core+MySql+Nginx 容器化部署
    .NET Core容器化之多容器应用部署@Docker-Compose
    .NET Core容器化@Docker
    Hello Docker
    使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署
    一道面试题的思考
    ABP入门系列(21)——切换MySQL数据库
    爬取朋友圈,Get年度关键词
    一张图理清ASP.NET Core启动流程
    UnitOfWork知多少
  • 原文地址:https://www.cnblogs.com/mululu/p/6008006.html
Copyright © 2020-2023  润新知