首页 > 其他分享 >vmstat详解

vmstat详解

时间:2023-02-01 15:12:28浏览次数:52  
标签:175320 vmstat 内存 IO 进程 CPU 详解

vmstat详解

 

一、 解读内存     

         Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。

        vmstat(VirtualMeomoryStatistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。 

 
NAME
       vmstat - Report virtual memory statistics

SYNOPSIS
       vmstat [-a] [-n] [delay [ count]]
       vmstat [-f] [-s] [-m]
       vmstat [-S unit]
       vmstat [-d]
       vmstat [-D]
       vmstat [-p disk partition]
       vmstat [-V]

参数解读:

要以3秒为时间间隔,连续收集10次性能数据,命令如下:

root@debian6:~# vmstat 3 10
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 772804  41964 175320    0   32     5   143   22   14  0  0 99  0
 0  0      0 772796  41964 175320    0    0     0     0   24   14  0  0 100  0
 0  0      0 772796  41964 175320    0    0     0     0   22   15  0  0 100  0
 0  0      0 772796  41964 175320    0    0     0     0   29   16  0  0 100  0
 0  0      0 772796  41964 175320    0    0     0     0   52   36  0  0 100  0
 0  0      0 772796  41964 175320    0    0     0     0   46   21  0  0 100  0
 0  0      0 772780  41964 175320    0    0     0     0   51   50  1  0 99  0
 0  0      0 772780  41964 175320    0    0     0     0   48   25  0  0 100  0
 0  0      0 772780  41964 175320    0    0     0     0   43   19  0  1 99  0
 0  0      0 772780  41964 175320    0    0     0     0   36   18  0  0 100  0
 

 

参数解读:

 

       对于内存监控,需要关心的指标包括:swpd、free、buff、cache、si和so,尤其需要重视的是free、si和so。很多人都会认为系统的空闲内存(free)少就代表系统性能有问题,其实并不是这样的,这还要结合si和so(内存和磁盘的页面交换)两个指标进行分析。正常来说,当物理内存能满足系统需要的话(也就是说物理内存能足以存放所有进程的数据),那么物理内存和磁盘(虚拟内存)是不应该存在频繁的页面交换操作的,只有当物理内存不能满足需要时系统才会把内存中的数据交换到磁盘中。而由于磁盘的性能是比内存慢很多的,所以如果存在大量的页面交换,那么系统的性能必然会受到很大影响。

二、 解读CPU

 

         在Linux系统中监控CPU的性能主要关注3个指标:运行队列、CPU使用率和上下

文切换,理解这3个指标的概念和原理对于发现和处理CPU性能问题有很大的帮助。


1. 运行队列

   每个CPU都会维护一个运行队列,调度器会不断地轮询让队列中的进程运行,直到进程运行完毕将其由队列中删除。如果CPU过载,就会出现调度器跟不上系统要求,导致运行队列中等待运行的进程越来越多。正常来说,每个CPU的运行队列不要超过3,如果是双核CPU就不要超过6。


2. CPU使用率

   CPU使用率一般可以分为一下几个部分。

   a. 用户进程:运行用户进程所占用的CPU时间的百分比。

   b. 系统进程:运行系统进程和中断所占用的CPU的时间百分比。

   c. 等待IO:因为IO等待而使CPU处于idle状态的时间百分比。

   d. 空闲:CPU处于空闲状态的时间百分比。    

  如果CPU的空闲率长期低于10%,那么表示CPU的资源已经非常紧张,应该考虑进程优化或添加更多地CPU。“等待IO”表示CPU因等待IO资源而被迫处于空闲状态,这时候的CPU并没有处于运算状态,而是被白白浪费了,所以“等待IO应该越小越好。”


3. 上下文切换

         通过CPU时间轮询的方法,Linux能够支持多任务同时运行。对于普通的CPU,内核会调度和执行这些进程,每个进程都会被分配CPU时间片并运行。当一个进程用完时间片或者被更高优先级的进程抢占时间块后,它会被转到CPU的等待运行队列中,同时让其他进程在CPU上运行。这个进程切换的过程被称为上下文切换。过多的山下文切换会造成系统的很大的开销。

实例解读:

 

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状态图,可以与上图作比较:

标签:175320,vmstat,内存,IO,进程,CPU,详解
From: https://www.cnblogs.com/iancloud/p/17082708.html

相关文章

  • mysql-mysqldump命令详解
    注意:备份加入--databases备份文件中会有创建数据库的语句,否则没有建议:导出库加入、导出表不加此参数一、mysqldump命令备份Mysql数据库的参数说明在用mysqldump备份使用......
  • mysql explain详解
    本文转载自 https://www.cnblogs.com/LoveBB/p/15181075.htmlExplain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」......
  • PyCharm2023年安装教程:步骤详解
    PyCharm2023年安装教程:步骤详解首先,让我们介绍PyCharm,它是一款功能强大的Python集成开发环境(IDE),支持代码编写、调试、语法高亮、智能代码补全、版本控制等一系列功......
  • (转)go类型转换strconv详解
    原文:https://blog.csdn.net/xixihahalelehehe/article/details/1046720691.零值变量在定义时没有明确的初始化时会赋值为零值。零值是:数值类型为0,布尔类型为false......
  • 详解如何用 C 为 Python 实现扩展模块
    当Python代码的执行效率不高时,我们会选择将性能相关的部分交给C来实现,但这要求开发者必须熟悉Python提供的CAPI。为此我专门写了一个系列,介绍如何用C给Python......
  • Java中Set里remove详解
    例如1HashSetset=newHashSet();2Personp1=newPerson(1001,"AA");3Personp2=newPerson(1002,"BB");4set.add(p1);5set.add(p2);6p1.name=......
  • 前端主题切换方案详解 转载
    前端主题切换方案 现在我们经常可以看到一些网站会有类似暗黑模式/白天模式的主题切换功能,效果也是十分炫酷,在平时的开发场景中也有越来越多这样的需求,这里大致罗列一些......
  • mvc_jsp演变历史和MVC详解
    MVC:开发模式1.jsp演变历史1.早期只有servlet,只能使用response输出标签数据,非常麻烦2.后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大......
  • Video标签详解
    参考菜鸟:HTML <video> 标签掘金:H5video标签使用        H5video开发问题及相关知识点博客:html5中video标签的用法MDN:<video>:视频嵌入元素HTMLV......
  • 《权值线段树详解》——代码仓库
    P3369【模板】普通平衡树#include<bits/stdc++.h>#defineintlonglong#definels(t[i].l)#definers(t[i].r)#definemid((l+r)>>1)usingnamespacestd;co......