vmstat差不多是性能测试时在Linux服务器上执行得最多的命令,使用该命令能辅助我们定位很多的性能问题。
我们先来看一下执行vmstat命令后,获取到的服务器资源使用的监控数据有哪些,如图2-1-1所示。
图2-1-1
在图2-1-1中,在执行vmstat的时候,后面加了两个参数,其中参数1代表每隔1秒获取一次服务器的资源使用数据,参数10代表总共获取10次。vmstat命令的监控数据项如表2-1所示。
表2-1 vmstat命令的监控数据项及其含义
(续表)
vmstat还可以支持其他参数,我们可以通过执行vmstat --help命令查看到它支持的其他参数,如图2-1-2所示。
图2-1-2
· -a, --active:显示活跃和非活跃的内存。
· -f, --forks:显示操作系统从启动至今的fork数量。fork一般指的就是启动过的进程数量,Linux操作系统用fork()函数来创建进程。
· -m, --slabs:显示slab的相关信息。slab是Linux内核中按照对象大小进行分配的内存分配器,通过slab的信息可以查看各个内核模块占用的内存空间,可以通过cat/proc/meminfo |grep Slab命令来查看slab占用的总内存大小,如果占用的内存过大,那么可能是内核模块出现了内存泄漏。
· -n, --one-header:这个参数表示只显示头部第一行的信息。
· -s, --stats event counter statistics:显示内存相关的统计信息及多种系统操作活动(或事件)发生次数的统计,比如CPU时钟中断的次数、CPU上下文切换的次数等。
· -d, --disk statistics:显示每一块磁盘I/O相关的明细信息。
· -D, --disk-sum:显示磁盘I/O相关的汇总信息,-D显示的信息是对-d参数显示的每个磁盘块信息的汇总。
· -p, --partition <dev> partition specific statistics :显示磁盘中某个分区的I/O读写信息。例如执行vmstat -p /dev/sda1可以显示/dev/sda1这个分区的I/O读写的相关的信息。
· -S, --unit<char>define display unit:使用指定单位显示。参数有k、K、m、M,分别代表1000字节、1024字节、1000000字节、1048576字节。默认单位为K(1024字节)。
· -w, --wide output:这个参数用于调整命令输出结果的显示方式。输出的结果和单独执行vmstat命令得到的结果完全一样,只是在输出时,会以更宽的宽度来展示数据。
· -t, --timestamp show timestamp:在vmstat命令输出数据的基础上,增加每次获取数据时当前时间戳的输出显示。
· -V, --version output version information and exit:输出vmstat命令的版本信息。