mmtests是一个可配置的测试套件,可以被MM开发者用来进行一个常规测试。理想情况下,它可以与LTP,xfstests等测试工具结合起来实现自动化测试。
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
一般情况下,我们已经对内核进行了的不同配置,在相关的环境下进行测试得到了两组不同的结果,这些测试结果在mmtests/work/log目录之下,接下来要作的工作就是比较它们,输入命令(依然在mmtests目录之下):
./bin/compare-mmtests.pl -d work/log/ -b parallelio -n nozswap2G,zswap2G
参数解释
-d: 测试文件所在目录
-b:测试所用的benchmark,在config和work/log之中都可以找到
-n:要对比的文件名字:这个就是在上一步的测试中我们所使用的参数
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=
本文来源:谁不小心的CSDN博客 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