memtester使用

A userspace utility for testing the memory subsystem for faults. It's portable and should compile and work on any 32- or 64-bit Unix-like system. (Yes, even weird, proprietary Unices, and even Mac OS X.) For hardware developers, memtester can be told to test memory starting at a particular physical address as of memtester version 4.1.0.  
操作步骤如下: 
[root@localhost ~]# wget 
http://pyropus.ca/software/memtester/old-versions/memtester-4.2.0.tar.gz 
[root@localhost ~]# tar -xvf memtester-4.2.0.tar.gz [root@localhost ~]# cd memtester-4.2.0 [root@localhost ~]# make && make install [root@localhost memtester-4.2.0]# vi README  Using memtester  
    Usage is simple for the basic case.  As root, run the resulting memtester binary with the following commandline:  
      memtester <memory> [runs]  
    An optional "-p physaddr" argument available to cause memtester to test 
    memory starting at a specific physical memory address (by mmap'ing     /dev/mem starting at an offset of `physaddr`, which is given in hex). #以上是节选,直接跟要测试的内存的大小就可以,默认单位是M,也可以手动指定为B, K, M, or G; -p参数是指定内存物理地址的。   For example, if you want to test a bank of RAM or device which is 64kbytes in size and starts at physical 
    address 0x0C0000, you would run memtester as follows:  
      memtester -p 0x0c0000 64k [runs]  
[root@localhost memtester-4.2.0]# memtester 256  memtester version 4.2.0 (32-bit) Copyright (C) 2010 Charles Cazabon. 
Licensed under the GNU General Public License version 2 (only).  
pagesize is 4096 
pagesizemask is 0xfffff000 want 256MB (268435456 bytes) 
got  256MB (268435456 bytes), trying mlock ...locked. Loop 1: 
  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  
注:测试结果仅仅截取了一部分。我测试的过程中,使用的机器内存为1G,swap分区为4G。首次测试时,将测试的内存大小指为1G,机器死机。个人认为是由于memtester将 内存全部占用导致的。      
运行memteste非常简单,作为root ./ memtester <memory> [runs] <memory>:内存大小,单位M [runs]:运行次数  
这样我们就可以对单颗CPU的机器进行测试,查看内存是否足够稳定。 但如果我有多颗CPU和较大的memory呢?最简单的方法是多开几个终端,同时运行memtester,每个CPU分配同样大小的内存。 还有一种方法可以使用Baif编写的一个脚本memtester-multi.sh,位置放在memtester-4.0.7下就可以了。 这个脚本只在linux下有效!  #!/bin/sh 
# Memory Tester Scripts  
# by Baif 
# version = date 
VERSION="Fri Oct 19 11:56:57 CST 2007"  
# trap for irruptions 
MEMTESTER=${PWD}/memtester PPIDKILL=$$ SIDKILL=$$ 
trap "pkill -9 -P ${PPIDKILL};kill -9 $$" INT trap "pkill -9 -P ${PPIDKILL};kill -9 $$" KILL   
cat <<-EOF_vpps >&2  
Version: ${VERSION} PID: $$ 
PPIDKILL: ${PPIDKILL} SIDKILL: ${PPIDKILL}  
EOF_vpps  
CORE_NUM=$(grep -i ^processor /proc/cpuinfo|wc -l) MEMTESTERCOPY=${CORE_NUM} 
MEM_TOTAL_K=$(awk '/^MemTotal/{print $2}'  /proc/meminfo) MEM_RESERVE_PERCENTAGE=$((1000*50/1024)) # 95%  
MEM_RESERVED=$((MEM_TOTAL_K/1024*MEM_RESERVE_PERCENTAGE/1000)) MEM_TOTAL_TOBETESTED=$((MEM_TOTAL_K/1024-MEM_RESERVED)) MEM_PER_COPY=$((MEM_TOTAL_TOBETESTED/MEMTESTERCOPY))  
RUN_DURATION_TIME=0 RUN_LOOPS=-1 
RUN_DURATION_TIME_FLAG=0 RUN_LOOPS_FLAG=0 DDPERCOPY_TIME=6s  
LOGDIR=/tmp/memtester-log-${$} mkdir -p ${LOGDIR}  
show_help () { 
        cat <<-EOFshow_HELP >&2  
Version: ${VERSION}  
        Usage: $(basename ${0}) 
         -r Directory: the root location of memtester binary file          -c NUMBER: the copies of memtester should be run 
         -m NUMBER: how many memory should be tested totally (in MB)          -t TIME:   duration mode, how long will the tests go 
         -l NUMBER: loops mode,how many loops will each memtester should go  
         The option -t and -l are exclusive, which means tests could work           only with   1. duration mode or 2. loops mode  
         RUN 4 copies memtester with in 24 hours, to test total 4000 MB memory:  
         $(basename ${0}) -t 24h -c 4 -m 4000  
         RUN 2 copies memtester with in 1 hours, to test total 4000 MB memory:  
         $(basename ${0}) -t 1h -c 4 -m 4000  
         RUN 4 copies memtester with in 2 loops, to test total 3600 MB memory:  
         $(basename ${0}) -l 2 -c 4 -m 3600  
         -V/-h/-H: show this info.  
        EOFshow_HELP  
        exit 0 }  
while getopts :c:m:t:l:r:p:hHVvx OPTION do 
 case ${OPTION} in  c) 
        #echo "-c ${OPTARG}"         MEMTESTERCOPY=${OPTARG}  ;  m) 
        #echo "-m ${OPTARG} MB" 
        MEM_TOTAL_TOBETESTED=${OPTARG} 

        MEM_RESERVED=$((MEM_TOTAL_K/1024-MEM_TOTAL_TOBETESTED))  ; 

t) 

        #echo "-t ${OPTARG}" 
        [ 0 -ne ${RUN_LOOPS_FLAG} ] && echo "-t and -l are exclusive." && exit 222 
        RUN_DURATION_TIME=${OPTARG}         RUN_DURATION_TIME_FLAG=1  ;  l) 
        #echo "-l ${OPTARG}" 
        [ 0 -ne ${RUN_DURATION_TIME_FLAG} ] && echo && echo "-t and -l are exclusive." && show_help && echo && exit 223         RUN_LOOPS=${OPTARG};         RUN_LOOPS_FLAG=1  ;  d) 
        #echo "-r ${OPTARG}" 
        MEMTESTER=${OPTARG}/memtester  ;  p) 
        #echo "-p ${OPTARG}"         MEMTESTER=${OPTARG}  ; 
 V|h|H) 
        show_help  ;  v) 
        set -v  ;  x) 
        set -x  ; 
 ?)     echo "Error..."; 
        echo "?Unknown args..."         exit 224  ; 
 *)     #echo "*Unknown args..."  esac done #exit [ 0 -eq ${RUN_DURATION_TIME_FLAG} ] && [ 0 -eq ${RUN_LOOPS_FLAG} ] && echo && echo "Please specified which mode should we run... -t or -l" && show_help && echo && exit 225  
MEM_PER_COPY=$((MEM_TOTAL_TOBETESTED/MEMTESTERCOPY)) 






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值