在性能测试时,Linux中的mpstat命令也经常用来监控服务器整体性能指标。mpstat命令和vmstat命令非常类似。我们来看一下执行mpstat 1 10命令后,获取到的服务器资源使用的监控数据,如图2-1-3所示。
图2-1-3
我们在执行mpstat命令的时候,后面同样加了两个参数,其中参数1代表每隔1秒获取一次服务器的资源使用数据,参数10代表总共获取10次,这一点和vmstat的使用类似。
· %usr:表示的是用户模式下CPU使用时间的百分比,和vmstat中得到的us数据基本一致。
· %nice:表示在进程优先级调度下CPU占用时间的百分比。在Windows操作系统中,进程的运行是可以设置优先级的,Linux操作系统也是一样,优先级越高的,获取到CPU运行的机会越高。这个值一般都会是0.00,但是一旦我们在程序运行时修改过默认优先级,%nice就会产生占用时间的百分比。在Linux中,执行top或者ps命令时,通常会输出PRI/PR、NI、%ni/%nice这3个指标。
PRI:表示进程执行的优先级。值越小,优先级就越高,会越早获得CPU的执行权。
NI:表示进程的nice值。它表示进程可被执行的优先级的修正数值,其PRI值越小,会越早被CPU执行,在加入nice值后,将会使得PRI的值发生变化,新的PRI值=老的PRI值+nice值,因此可以看出PRI的排序是和nice密切相关的。nice值越小,PRI值就会越小,就会越早被CPU执行。在Linux操作系统中,如果nice值相同,进程uid为root用户进程的执行优先级会更高。通常情况下,子进程会继承父进程的nice值,在操作系统启动时init进程会被赋予0,其他进程(其他的进程基本都是init进程开辟的子进程)会自动继承这个nice值。
%ni/%nice:可以形象地表示为改变过优先级的进程占用CPU的百分比,即可以理解为nice值影响的内核分配给进程的CPU时间片的多少。
· %sys:表示系统内核进程执行时间百分比(system time)。该值越高,说明系统内核消耗的CPU资源越多,这和vmstat命令中的sy数据基本一致。
· %iowait:表示I/O等待时间的百分比。该值越高,说明I/O等待越严重,这和vmstat命令中的wa数据基本一致。
· %irq:表示用于处理系统中断的CPU百分比。这和vmstat命令中的in数据的含义类似。in越高,%irq也会越高。
· %soft:表示用于软件中断的CPU百分比。
· %steal:表示CPU等待虚拟机调度的时间占比。这个指标一般在虚拟机中才会有,物理机中该值一般维持为0,这和vmstat命令中的st数据基本一致。
· %guest:表示运行vCPU(Virtual Processor,虚拟处理器)时所消耗的CPU时间百分比。
· %gnice:表示运行降级虚拟程序所使用的CPU占比。
· %idle:表示空闲CPU时间的占比。这和vmstat命令中的id数据基本一致。
上面执行mpstat 1 10获取到的是服务器中所有的CPU核数的汇总数据,所以在显示时,CPU列显示的为all。如果我们需要查看服务器中某一个CPU核的资源使用情况,可以在执行mpstat命令时,加上-P这个参数,比如执行mpstat -P 0 1 10命令可以获取到服务器中编号为0的CPU核的资源使用情况(CPU核的编号是从0开始,比如图2-1-4中,服务器有两个CPU核,那么CPU核的编号就是0和1)。
图2-1-4