Linux性能监控之vmstat命令

详解vmstat命令

vmstat 工具提供了一种低开销的系统性能观察方式。
因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,可以在控制窗口使用vmstat 输出结果。
这个工具运行在2种模式下:average 和 sample 模式。
sample 模式通过指定间隔时间测量状态值,这个模式对于理解在持续负荷下的性能表现,很有帮助。

一般vmstat工具的使用是通过两个数字参数完成的,第一个参数是采样的时间间隔数(单位是秒),第二个参数是采样的次数。如果不指定vmstat的报告间隔,则输出系统最近一次启动以来所有数据的综合,不过通常可以忽略。
Linux性能监控之vmstat命令_第1张图片
上图是每隔2s输出一次系统信息。
Linux性能监控之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
 2  0 148980 109572      0 602148    0    1    39    16  179   46  2  3 95  0  0
类型 内容 说明
procs r 运行队列中的线程数量。这些是可运行的线程,但是CPU无法执行它们。
b 被阻塞并等待IO请求完成的进程数。比如正在等待磁盘I/O、网络I/O等
memory swpd 当前使用的虚拟内存量(KB)。当空闲内存达到低阈值时,更多的数据被分页到交换设备。
free 当前可用于正在运行的应用程序的物理内存量(以千字节为单位)。
buff read()和write()操作导致的缓冲区高速缓存中的物理内存量(以千字节为单位)。
cache 映射到进程地址空间的物理内存量,以千字节为单位。
swap si 从交换磁盘写回RAM的数据量,以千字节为单位。内存页面换入的量
so 写入交换磁盘的数据量,以千字节为单位。内存页面换出的量
io bi 从文件系统或交换设备分页到RAM中的磁盘块数。
bo 从RAM分页到文件系统或交换设备的磁盘块数。
system in 正在处理的中断数
cs 系统上当前发生的上下文切换的数量
cpu us 用户CPU 利用率的百分比
sy 内核和中断利用率的百分比
wa 系统等待IO的CPU时间百分比
id 处于空闲的CPU百分比
st 来自于一个虚拟机偷取的CPU时间的百分比

us+sy参考值为80%,如果us+sy大于80%,说明可能存在CPU不足。

注:重点关注r,即Run Queues(运行队列) - 每个处理器应该运行队列不超过1-3个线程。例如,一个双核处理器应该运行队列不要超过6 个线程。

运行队列中是那些已准备好运行、正等待可用CPU的轻量级进程。如果准备运行的轻量级进程数超过系统所能处理的上限,运行队列就会很长。运行队列长表名系统负载可能已饱和。

系统运行队列长度等于虚拟处理器的个数时,用户不会明显感觉到性能下降。此处虚拟处理器的个数就是系统硬件线程的个数。即Java API Runtime.availableProcessors()的返回值。当运行队列长度达到虚拟处理的4倍或更多时,系统的响应就非常迟缓了。

一般性的指导原则是:如果在很长一段时间里,运行队列的长度一直都超过虚拟处理器个数的1倍,就需要关注了,如果3~4倍,需要立刻引起注意或采取行动

案例

Linux性能监控之vmstat命令_第3张图片
Linux性能监控之vmstat命令_第4张图片

扩展

vmstat显示所有虚拟处理器的总CPU使用率,而mpstat可以显示每个虚拟处理器的CPU使用率。

你可能感兴趣的:(#,Linux,java,linux)