Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等. 通过给定测试内存的大小和循环次数, 可以对系统现有的内存进行项目的测试。
查看下帮助信息
[root@Sweep:/oem]# memtester -h
memtester version 4.3.0 (64-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
memtester: invalid option -- 'h'
Usage: memtester [-p physaddrbase [-d device]] <mem>[B|K|M|G] [loops]
loops指循环的次数
下面将测试1M内存,循环2次
[root@Sweep:/oem]# memtester 1 2
memtester version 4.3.0 (64-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 1MB (1048576 bytes)
got 1MB (1048576 bytes), trying mlock ...locked.
Loop 1/2:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
8-bit Writes : ok
16-bit Writes : ok
Loop 2/2:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
8-bit Writes : ok
16-bit Writes : ok
Done.
为方便测试,查看测试结果,写了个脚本
[root@Sweep:/oem]# cat memtester.sh
#!/bin/sh
mem=$1
loop=$2
i=0
while true
do
echo "========== test: $i loops =============="
thread=`ps | grep 'memtester' | grep -v 'memtester.sh'| grep -v 'grep' `
if [ x"$thread" = x"" ];then
i=`expr $i + 1`
echo -e "[loops: $i]\n\n" > /oem/memtester_time.txt
memtester $mem 1 >> /oem/memtester_time.txt &
if [ $? = 0 ];then
echo "test success!" >> /oem/memtester_time.txt
else
echo "test fail!" >> /oem/memtester_time.txt
fi
fi
if [ "$i" = "$loop" ];then
exit 0
fi
done
该脚本第一个参数是内存大小,第二个参数是循环的次数。执行脚本将会保存最后一次的测试记录。