mmtests使用简介

时间:2024-10-10 15:06:20

1.简介

mmtests是一个可配置的测试套件,可以被MM开发者用来进行一个常规测试。理想情况下,它可以与LTP,xfstests等测试工具结合起来实现自动化测试。

2.软件组织

run-mmtests.sh脚本用于运行测试,这个脚本会读取config文件,脚本接受一个参数,通常情况下,这个参数表明测试的名字,一般情况下它表明了内核的配置情况,例如

$:./run-mmtests.sh zswap2G

其中,每一种测试有对应的config文件,config文件在configs目录下面,测试之前,需要执行cp configs/oneconfig config,然后run-mmtests.sh会读取这个config中的内容,完成相关的测试。

其中config文件的部分内容如下:

DIRNAME=`dirname $0`
SCRIPTDIR=`cd "$DIRNAME" && pwd`
MEMTOTAL_BYTES=`free -b | grep Mem: | awk '{print $2}'`
NUM_CPU=$(grep -c '^processor' /proc/cpuinfo) # MM Test Parameters
export MMTESTS="parallelio"
export SKIP_WARMUP=yes # Profiling parameters
export SKIP_NOPROFILE=no
export SKIP_FINEPROFILE=yes
export SKIP_COARSEPROFILE=yes
export OPROFILE_REPORT_ANNOTATE=no # Fixups
if [ "`which check-confidence.pl 2> /dev/null`" = "" ]; then
export PATH=$SCRIPTDIR/bin:$PATH
fi
if [ "`which record-extfrag 2> /dev/null`" = "" ]; then
export PATH=$SCRIPTDIR/fraganalysis:$PATH
fi
if [ "`which oprofile_report.sh 2> /dev/null`" = "" ]; then
export PATH=$SCRIPTDIR/vmr/bin:$PATH
fi # Machine configuration
# Swap configuration can be one of default, partitions, swapfile, NFS
#export VM_DIRTY_RATIO=20
export VM_TRANSPARENT_HUGEPAGES_DEFAULT=default
export SWAP_CONFIGURATION=default
export SWAP_PARTITIONS=
export SWAP_SWAPFILE_SIZEMB=$((MEMTOTAL_BYTES/1048576))
export SWAP_NFS_MOUNT=192.168.10.7:/exports/`hostname`-swapfile
export SWAP_NBD_DEVICE=/dev/nbd0
export SWAP_NBD_HOST=mcp
export SWAP_NBD_PORT=10001
#export MEMCG_SIZE=$((MEMTOTAL_BYTES/2)) # Test disk to setup (optional)
#export TESTDISK_RAID_PARTITIONS="/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1"
#export TESTDISK_RAID_DEVICE=/dev/md0
#export TESTDISK_RAID_OFFSET=63
#export TESTDISK_RAID_SIZE=250019532
#export TESTDISK_RAID_TYPE=raid0
#export TESTDISK_PARTITION=/dev/sda6
#export TESTDISK_FILESYSTEM=ext3
#export TESTDISK_MKFS_PARAM="-f -d agcount=8"
#export TESTDISK_MOUNT_ARGS=""
#
# Test NFS disk to setup (optional)
#export TESTDISK_NFS_MOUNT=192.168.10.7:/exports/`hostname`
#
# Test NBD disk to setup (optional)
#export TESTDISK_NBD_DEVICE=/dev/nbd0
#export TESTDISK_NBD_HOST=mcp
#export TESTDISK_NBD_PORT=100`ifconfig eth0 | sed -n 2p | cut -d ":" -f2 | cut -d " " -f1 | cut -d "." -f4` # List of monitors
export RUN_MONITOR=yes
export MONITORS_ALWAYS=
export MONITORS_PLAIN=
export MONITORS_GZIP="proc-vmstat top slabinfo"
export MONITORS_WITH_LATENCY="vmstat iostat"
export MONITOR_UPDATE_FREQUENCY=10

其中MMtest parameter 和List of monitors比较关键,分别是测试所用的benchmark和monitor,这个和测试的结果有关,产生的测试结果位于mmtests/work/log之下

测试方式:在mmtests目录之下,执行

$: ./run-mmtests.sh zswap2G

3.对比测试结果

一般情况下,我们已经对内核进行了的不同配置,在相关的环境下进行测试得到了两组不同的结果,这些测试结果在mmtests/work/log目录之下,接下来要作的工作就是比较它们,输入命令(依然在mmtests目录之下):

 ./bin/compare-mmtests.pl -d work/log/ -b parallelio -n nozswap2G,zswap2G

参数解释

-d: 测试文件所在目录

-b:测试所用的benchmark,在config和work/log之中都可以找到

-n:要对比的文件名字:这个就是在上一步的测试中我们所使用的参数

4.注意事项:

1)要进行不同内核的比较,不能用同一份内核源码编译两个内核,这样会导致只有一份vmlinux,systemtap对于原来安装的内核因为无法找到对应的Vmlinux而无法运行

2)运行mmtests之前,可以监察systemtap是否安装成功:

stap -ve 'probe begin { log("hello world") exit() }'

如果输出hello world,说明是正常的

3)注意内核参数的配置

zswap.enabled=1 zswap.compressor=lzo

mem=

本文来源:谁不小心的****博客mmtests使用简介

外部参考:http://marc.info/?l=linux-mm&m=134702176004919&w=2

http://marc.info/?l=linux-kernel&m=136870044323912&w=2

http://marc.info/?l=linux-mm&m=137229863514619&w=2