vmstat 工具的使用
命令:vmstat 1 60> /tmp/cpu.txt
说明:每秒采样 1 次,共采集 100 次
格式化显示:cat /tmp/cpu.txt|column -t
(1)procs
r: 表示运行和等待 CPU 时间片的进程数,这个值如果长期大于系统 CPU 个数,就说明 CPU 资源不足,可以考虑增加 CPU;
b:表示在等待资源的进程数,比如正在等待 I/O 或者内存交换等。
(2)memory
swpd:表示切换到内存交换区的内存数量(以 KB 为单位)。如果 swpd 的值不为 0 或者比较大,而且 si、so 的值长期为 0,那么这种情况一般不用担心,不会影响系统性能;
free:表示当前空闲的物理内存数量(以 KB 为单位);
buff:表示 buffers cache 的内存数量,一般对块设备的读写才需要缓冲;
cache:表示 page cached 的内存数量,一般作文件系统的 cached,频繁访问的文件都会被 cached。如果 cached 值较大,就说明 cached 文件数较多。如果此时IO 中的 bi 比较小,就说明文件系统效率比较好。
(3)swap
si:表示由磁盘调入内存,也就是内存进入内存交换区的数量;
so:表示由内存调入磁盘,也就是内存交换区进入内存的数量
注意:一般情况下,si、so 的值都为 0,如果 si、so 的值长期不为 0,则表示系统内存不足,需要考虑是否增加系统内存。
(4)IO
bi:表示从块设备读入的数据总量(即读磁盘,单位 KB/秒)
bo:表示写入到块设备的数据总量(即写磁盘,单位 KB/秒)
注意:这里设置的 bi+bo 参考值为 1000,如果超过 1000,而且 wa 值比较大,则表示系统磁盘 IO 性能瓶颈。(需要根据具体硬件性能评估)
(5)system
in:表示在某一时间间隔中观察到的每秒设备中断数;
cs:表示每秒产生的上下文切换次数。
注意:上面这两个值越大,会看到内核消耗的 CPU 时间就越多。
(6)CPU
us:显示了用户进程消耗 CPU 的时间百分比。
sy:显示了内核进程消耗 CPU 的时间百分比。sy 的值比较高时,就说明内核消耗的 CPU 时间多;如果 us+sy 超过 80%,就说明 CPU 的资源存在不足。
id:显示了 CPU 处在空闲状态的时间百分比;
wa:表示 IO 等待所占的 CPU 时间百分比。wa 值越高,说明 IO 等待越严重。如果 wa 值超过 20%,说明 IO 等待严重。
st:一般不关注,虚拟机占用的时间百分比。
经验总结:
(1) cpu 一般被充分利用的大概的范围
us:65% - 70%
sy:30% - 35%
id:0% - 5%
(2)procs 中的 r 运行队列数不要超出每个处理器 3 个可运行状态线程的限制。
(3)sy 如果比较高一般是 in(中断)和 cs(上下文切换),可根据情况开启RPS 或者减少应用的线程池。