学习啦 > 学习电脑 > 操作系统 > Linux教程 > Linux系统中vmstat命令使用详解

Linux系统中vmstat命令使用详解

时间: 佳洲1085 分享

Linux系统中vmstat命令使用详解

  Linux系统中vmstat命令是一个监控工具。下面由学习啦小编为大家整理了linux系统中vmstat命令使用详解,希望对大家有帮助!

  Linux系统中vmstat命令使用详解

  vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。

  它能够对系统的整体情况进行统计,无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。

  (1)用法

  用法: vmstat [选项参数]

  或 vmstat [选项参数] [数字] [数字]

  (2)功能:

  功能: 报告虚拟内存的统计信息,关于进程、内存、I/O等系统整体运行状态。

  (3)选项参数:

  1) -d:        显示磁盘相关统计信息。

  2) -a:       显示活跃和非活跃内存

  3) -f:        显示从系统启动至今的fork数量。

  4) -p:       显示指定磁盘分区统计信息

  5) -s:       显示内存相关统计信息及多种系统活动数量。

  6) -m:       显示slabinfo

  Linux系统中vmstat命令详解实例

  1)[sunjimeng@localhost ~]$ vmstat          显示虚拟内存使用情况

  [sunjimeng@localhost ~]$ vmstat

  procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

  r b swpd free buff cache si so bi bo in cs us sy id wa st

  5 0 0 858580 752 506988 0 0 7 1 81 120 2 1 97 0 0

  [sunjimeng@localhost ~]$

  字段说明:

  1.Procs(进程)

  r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)

  b: 等待IO的进程数量。

  2.Memory(内存)

  swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。

  free: 空闲物理内存大小。

  buff: 用作缓冲的内存大小。

  cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

  3.Swap

  si: 每秒从交换区写到内存的大小,由磁盘调入内存。

  so: 每秒写入交换区的内存大小,由内存调入磁盘。

  注意:

  内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

  4.IO(现在的Linux版本块的大小为1kb)

  bi: 每秒读取的块数

  bo: 每秒写入的块数

  注意:

  随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

  5.system(系统)

  in: 每秒中断数,包括时钟中断。

  cs: 每秒上下文切换数。

  注意:

  上面2个值越大,会看到由内核消耗的CPU时间会越大。

  6.CPU(以百分比表示)

  us: 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

  sy: 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

  wa: IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

  id: 空闲时间百分比

  2)[sunjimeng@localhost ~]$ vmstat 2        每二秒显示一次系统内存的统计信息

  [sunjimeng@localhost ~]$ 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

  1 0 0 853508 752 507144 0 0 7 1 80 119 2 1 97 0 0

  0 0 0 853508 752 507144 0 0 0 0 376 466 3 2 96 0 0......

  3)[sunjimeng@localhost ~]$ vmstat 2 5       每二秒显示一次系统内存的统计信息,总共5次

  [sunjimeng@localhost ~]$ vmstat 2 5

  procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

  r b swpd free buff cache si so bi bo in cs us sy id wa st

  1 0 0 853888 752 507152 0 0 7 1 81 119 2 1 97 0 0

  0 0 0 853888 752 507152 0 0 0 0 609 763 5 2 92 0 0

  1 0 0 853888 752 507152 0 0 0 0 582 626 5 2 93 0 0

  0 0 0 853888 752 507152 0 0 0 0 399 464 3 2 95 0 0

  0 0 0 853888 752 507152 0 0 0 0 263 365 3 1 96 0 0

  [sunjimeng@localhost ~]$

  补充:虚拟内存原理

  在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。

  在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。

  分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。

  当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)

3645576