乐趣区

Linux命令-vmstat命令与top命令

vmstat 命令
vmstat 命令是 Linux 中常见的监控工具,可以打印给定时间间隔内服务器的 CPU 使用率,内存使用,虚拟内存交换情况,IO 读写情况。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
vmstat 的使用一般是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
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 命令的输出结果:

其中前 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 表示当前登录的用户数量为 1load 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 的进程的资源使用情况,并显式该进程启动的命令行参数

退出移动版