备注:作者的原创文章,转载须注明出处。原创文章归作者所有,欢迎转载,但是保留版权。对于转载了博主的原创文章,不标注出处的,作者将依法追究版权,请尊重作者的成果。
本文作者:张永清 文章选自 作者2020年初即将出版的《性能测试分析与性能诊断调优核心思想》一书。
l -a, --active 显示活跃和非活跃的内存
l -f, --forks 显示操作系统从启动至今的fork数量,fork一般指的就是启动过的进程数量,linux操作系统用fork()函数来创建进程。
l -m, --slabs 显示slab的相关信息,slab是linux内核中按照对象大小进行分配的内存分配器,通过slab的信息可以来查看各个内核模块占用的内存空间,可以通过cat /proc/meminfo |grep Slab 命令查看Slab占用的总内存大小,如果占用的内存过大,那么可能是内核模块出现了内存泄漏了。
l -n, --one-header 这个参数表示只显示头部第一行的信息
l -s, --stats event counter statistics 显示内存相关的统计信息及多种系统操作活动发生数量统计,比如CPU时钟中断的次数,CPU上下文切换的次数等。
l -d, --disk disk statistics 显示每一块磁盘I/O相关的明细信息
l -D, --disk-sum 显示磁盘I/O相关的汇总信息,-D 显示的信息是对-d参数显示的每个磁盘块的信息的汇总。
l -p, --partition <dev> partition specific statistics 显示磁盘中某个分区的I/O读写信息。例如执行vmstat -p /dev/sda1 可以显示/dev/sda1这个分区的I/O读写的相关的信息。
l -S, --unit <char> define display unit 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
l -w, --wide wide output 这个参数用于调整命令输出结果的显示方式,输出的结果和单独执行vmstat命令得到的结果是完全一样,只是在输出时,会以更宽的宽度来展示数据。
l -t, --timestamp show timestamp 在vmstat命令输出的数据的基础上,增加每次获取数据时的当前时间戳的输出显示
l -V, --version output version information and exit 输出vmstat命令得版本信息
1.1.2 如何通过mpstat 分析服务器的性能指标
linux中的mpstat 命令也是在性能测试时经常用来监控服务器整体性能指标的一种方式,mpstat命令和上面我们讲到的vmstat命令非常类似,我们来看一下执行vmstat 命令后,获取到的服务器的资源使用的监控数据。
我们在执行mpstat的时候,后面同样加了两个参数,其中参数1代表每隔1秒获取一次服务器的资源使用数据,10代表总共获取10次,这点和vmstat的使用很类似。
l %usr 表示的是用户模式下CPU使用时间的百分比,和vmstat中得到的us数据基本一致
l %nice 表示CPU在进程优先级调度下CPU占用时间的百分比,在操作系统中,进程的运行是可以设置优先级的,linux操作系统也是一样,优先级越高的,获取到CPU运行的机会越高。这个值一般的时候都会是0.00,但是一旦我们在程序运行时,修改过默认优先级时,%nice就会产生占用时间的百分比,在linux中,执行top或者ps命令时,通常会输出PRI/PR、NI、%ni/%nice这三个指标。
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时间片的多少。
l %sys表示系统内核进程执行时间百分比(system time),该值越高时,说明系统内核消耗的CPU资源越多,和vmstat命令中的sy数据基本一致。
l %iowait表示I/O等待时间百分比,该值越高时,说明IO等待越严重,和vmstat命令中的wa数据基本一致。
l %irq表示用于处理系统中断的 CPU 百分比,和vmstat命令中的in数据的含义类似,in越高,那么%irq也会越高。
l %soft表示用于软件中断的 CPU 百分比。