操作系统性能监控优化不外乎对CPU、Memory、IO、Network这四个方面,下面分别介绍使用工具和指标

  一、CPU

  1、良好状态指标

  CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%。

  上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。

  可运行队列:每个处理器的可运行队列<=3个线程。

  2、监控工具

vmstat
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
14  0    140 2904316 341912 3952308  0    0     0   460 1106 9593 36 64  1  0  0
17  0    140 2903492 341912 3951780  0    0     0     0 1037 9614 35 65  1  0  0
20  0    140 2902016 341912 3952000  0    0     0     0 1046 9739 35 64  1  0  0
17  0    140 2903904 341912 3951888  0    0     0    76 1044 9879 37 63  0  0  0
16  0    140 2904580 341912 3952108  0    0     0     0 1055 9808 34 65  1  0  0

  重要参数:

  r,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用;

  b,被blocked的进程数,正在等待IO请求;

  in,interrupts,被处理过的中断数

  cs,context switch,系统上正在做上下文切换的数目

  us,用户占用CPU的百分比

  sys,内核和中断占用CPU的百分比

  id,CPU完全空闲的百分比

  上例可得:

  sy高us低,以及高频度的上下文切换(cs),说明应用程序进行了大量的系统调用;

  这台4核机器的r应该在12个以内,现在r在14个线程以上,此时CPU负荷很重。

  查看某个进程占用的CPU资源

$  while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'test_command'; sleep 1; done
PID  NI PRI %CPU PSR COMMAND
28577   0  23  0.0   0 test_command
28578   0  23  0.0   3 test_command
28579   0  23  0.0   2 test_command
28581   0  23  0.0   2 test_command
28582   0  23  0.0   3 test_command
28659   0  23  0.0   0 test_command
……