Linux命令-vmstat命令与top命令

vmstat命令

vmstat命令是Linux中常见的监控工具,可以打印给定时间间隔内服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

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

Linux命令-vmstat命令与top命令
vmstat 2表示让服务器一直每隔2秒就采集一次系统信息并打印,可以使用Ctrl+C退出程序。
vmstat 2 3表示让服务器每隔2秒就采集一次系统信息并打印,打印3次。

vmstat命令结果参数的意义

  • r:表示运行队列
  • b:表示堵塞的进程
  • swpd:虚拟内存已使用的大小,如果大于0,表示机器物理内存不足了,如果不是程序内存泄露的原因,那么应该升级内存或者把耗内存的任务迁移到其他机器。
  • free:空闲的物理内存的大小
  • buff:用作缓冲的内存大小
  • cache:用作缓存的内存大小
  • si:每秒从磁盘读入虚拟内存的大小,若值大于0,表示物理内存不过或者内存泄漏
  • so:每秒虚拟内存写入磁盘的大小,若值大于0,同上
  • bi:块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。
  • bo:每秒发送到块设备的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
  • in:每秒CPU的中断次数,包括时间中断
  • cs:每秒上下文切换次数
  • us:用户CPU时间。 us的值比较高时,说明用户进程消耗的CPU时间多
  • sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁
  • id:空闲 CPU时间,一般来说,id + us + sy = 100,
  • wa:表示等待使用CPU的百分比(该数值大说明CPU不足)
  • st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)

关于buffer/cache

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

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

小结
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
也就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。
如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

top命令

top命令可以实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,它提供了实时地对系统的状态监视,该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

top命令输出结果

先看看top命令的输出结果:

Linux命令-vmstat命令与top命令

其中前5行是系统整体信息的统计信息,从第6行开始为进程信息区统计信息区域,主要显示各个进程的详细信息。

第一行:top -
第一行是任务队列信息,同uptime命令的执行结果,参数含义如下:

top - 15:31:37 up  3:00,  1 user,  load average: 0.00, 0.01, 0.05

15:31:37表示当前时间
up 3:00 表示系统的运行时间
1 user表示当前登录的用户数量为1
load average: 0.01, 0.04, 0.05表示系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容会超过两行。内容如下:
第二行:Tasks:
126 total: 进程总数
1 running: 正在运行的进程数
125 sleeping: 睡眠的进程数
0 stopped: 停止的进程数
0 zombie: 僵尸进程数

第三行:Cpu(s):
0.0% us: 用户空间占用CPU百分比
0.0% sy: 内核空间占用CPU百分比
0.0% ni: 用户进程空间内改变过优先级的进程占用CPU百分比
100% id: 空闲CPU百分比
0.0% wa: 等待输入输出的CPU时间百分比
0.0% hi: 硬件CPU中断占用百分比
0.0% si: 软中断占用百分比
0.0% st: 虚拟机占用百分比

第四行为内存信息
total:物理内存总量
used:使用的物理内存总量
free:空闲内存总量
buffers:用作内核缓存的内存量
cached:用作缓存的内存大小

第五行为swap交换分区信息
total:交换区总量
used:已使用的总量
free:空闲中总量
avail Mem:可用总量

第六行及以下显示了各进程(任务)的状态监控
各列所代表的含义如下:

  • PID 进程id
  • USER 进程所有者
  • PR 进程优先级
  • NI nice值。负值表示高优先级,正值表示低优先级
  • VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR 共享内存大小,单位kb
  • S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU 上次更新到现在的CPU时间占用百分比
  • %MEM 进程使用的物理内存百分比
  • TIME+ 进程使用的CPU时间总计,单位1/100秒
  • COMMAND 进程名称(命令名/命令行)

top的常见使用

常用选项:
-d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
-p:通过指定监控进程ID来仅仅监控某个进程的状态。
-c:显示整个命令行而不只是显示命令名
-i:使top不显示任何闲置或者僵死进程。

常用交互命令:

  • ctrl+m:根据驻留内存大小进行排序
  • ctrl+p:根据CPU使用百分比大小进行排序。
  • ctrl+w:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
  • i:忽略闲置和僵死进程。这是一个开关式命令。
  • h: 显示帮助画面,给出一些简短的命令总结说明。
  • k:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
  • q: 退出程序。

常用操作:

  • top :每隔5秒显式所有进程的资源占用情况
  • top -d 2 :每隔2秒显式所有进程的资源占用情况
  • top -c:每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
  • top -p 12345 -p 6789:每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
  • top -d 2 -c -p 123456 :每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数

相关推荐