龙芯板卡内存压力测试方法
一、自动分配方式
推荐方法
1.1 准备工作:
- 获取内存测试ddr.tar.gz包,提取码:dama
- 解压ddr.tar.gz 包,解压 命令
tar -zxvf ddr.tar.gz
,解压后得到ddr目录 - ddr目录里有:README.txt、run、 stressapptest 文件和 result 目录
1.2 帮助信息README.txt 内容
下内存压力测试程序说明
操作流程:
- 启动到系统下,打开终端,进入超级用户下
sudo -i
- 修改权限
chmod +x run
- 开始测试,有三种模式,分别是
a、执行./run
备注a: 不带参数直接运行 ./run 默认是3600s
b、执行./run time
备注b:参数time 单位是秒
c、执行./run -h time
备注c:参数time 单位是小时
备注:脚本运行内容:将系统剩余的内存容量的80%进行压力测试,总共开10进程 - 运行后,每间隔60s 检测一次是否有错误,如果出错立即停止
- 结果保存到当前result目录里
结果:
- 测试成功:
终端下打印 "DDR test is OK ^_^ "。 - 测试失败:
终端下打印 “DDR test is error!!!”。 ,错误日志保存到当前result 目录下。
二、 手动分配方式
1、 测试工具
-
la架构工具
从ddr.tar.gz包获取
2、创建执行脚本ddr.sh,内容如下:
#!/bin/sh
filestr="./"
logname="ddr.log"
tmpname="tmp.log"
errname="err.log"
pwdfile=$filestr$logname #存储log
errfile=$filestr$errname #存储err
tmpfile=$filestr$tmpname #临时文件
check=60 #检测间隔
while true
do
echo -n "Input Range: 1 ~ 25\n"
echo -n "Input number of processes: "
read line1
if [ $line1 -lt 25 ]; then
if [ $line1 -gt 0 ]; then
echo Enter value: $line1
echo $line1 > $tmpfile
break
fi
fi
done
cont=$(cat $tmpfile)
echo "\n"
while true
do
echo -n "Input Range: 1 ~ 1000\n"
echo -n "Input -M parameter: "
read line1
if [ $line1 -lt 1000 ]; then
if [ $line1 -gt 0 ]; then
echo Enter value: $line1
echo $line1 > $tmpfile
break
fi
fi
done
size=$(cat $tmpfile)
echo "\n"
while true
do
echo -n "Input Range: 1 ~ 1000000\n"
echo -n "Input -s parameter: "
read line1
if [ $line1 -lt 1000000 ]; then
if [ $line1 -gt 0 ]; then
echo Enter value: $line1
echo $line1 > $tmpfile
break
fi
fi
done
seco=$(cat $tmpfile)
echo "\n"
echo "stressapptest -M $size -s $seco"
rm $pwdfile -rf
date > $pwdfile
for i in $(seq 1 $cont)
do
echo "OPEN stressapptest conts --->$i "
./stressapptest -M $size -s $seco >> $pwdfile &
sleep 1
done
sleep 10
echo "----------------------------------------------------------------\n"
echo "View remaining memory capacity:\n"
free -m |tee -a $pwdfile
echo "----------------------------------------------------------------\n"
for j in $(seq 1 $(($seco/$check)))
do
tail -2000 $pwdfile > $tmpfile
grep "reread" $tmpfile > $errfile
if [ $? -eq 0 ]; then
rm $tmpfile -rf
echo "DDR test is error!!!"
echo "Stressapptest is running for $(($j*$check)) seconds, DDR test is error!" >> $errfile
killall -9 stressapptest
killall sleep
exit
fi
if [ -e "/sys/class/hwmon/hwmon0/temp1_input" ]; then
cat /sys/class/hwmon/hwmon0/name |tee -a $pwdfile
cat /sys/class/hwmon/hwmon0/temp1_input |tee -a $pwdfile
fi
sleep $check
echo "Stressapptest is running for $(($j*$check)) seconds"
if [ $(($j % 10)) -eq 0 ]; then
free -m |tee -a $pwdfile
echo "--$(date)-- clear caches tag[$j]" |tee -a $pwdfile
sync; echo 1 > /proc/sys/vm/drop_caches
free -m |tee -a $pwdfile
fi
done
rm $tmpfile -rf
echo "DDR test is OK ^_^"
3、将ddr.sh与stressapptest放到一个目录下,修改执行权限 chmod 777 ddr.sh stressapptest
例如: 计划开5个进程,每个进程200M,测试1小时(3600秒),执行测试脚本./ddr.sh
为了保证内存压力达到最大,将
free -m
看到的空闲内存尽量全部用没!!!
./ddr.sh
备注:
- 如果出错程序会停止,错误信息会保存到err.log文件里
- 整个测试过程log信息保存到ddr.log里
- 测试完成如没有出错则打印:DDR test is OK