Linux 内存测试工具memtester


下载地址:http://pyropus.ca/software/memtester/  有源码安装包、deb包、rpm包等。

源码已经编译好,只要make一下就好了。

使用方法:

Usage: memtester [-p physaddrbase] <mem>[B|K|M|G] [loops]

如:
memtester 28G 3 #测试28G的内存3次。

因为系统运行和本工具运行都需要内存,所以不能把所有的内存都测试到。可以先用free 命令查看系统剩余多少内存空间再测试。

高级点的可以用-p参数从内存地址开始测试。

memtester version 4.2.0 (64-bit)

Copyright (C) 2010 Charles Cazabon.

Licensed under the GNU General Public License version 2 (only).


pagesize is 4096

pagesizemask is 0xfffffffffffff000

want 28672MB (30064771072 bytes)

got  28672MB (30064771072 bytes), trying mlock ...locked.

Loop 1/3:

  Stuck Address       : testing   0memtester version 4.2.0 (64-bit)

Copyright (C) 2010 Charles Cazabon.

Licensed under the GNU General Public License version 2 (only).

 


pagesize is 4096

pagesizemask is 0xfffffffffffff000

want 28672MB (30064771072 bytes)

got  28672MB (30064771072 bytes), trying mlock ...locked.

Loop 1/3:

  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


结果全部为OK则内存正常。

对于某些不需要的测试项目可以通过修改memtester.c文件,注释掉某些内容再重新make一下便可。如下:


struct test tests[] = {

    { "Random Value", test_random_value },

    { "Compare XOR", test_xor_comparison },

    { "Compare SUB", test_sub_comparison },

    { "Compare MUL", test_mul_comparison },

    { "Compare DIV",test_div_comparison },

    { "Compare OR", test_or_comparison },

    { "Compare AND", test_and_comparison },

/*    { "Sequential Increment", test_seqinc_comparison }, */

/*    { "Solid Bits", test_solidbits_comparison },

    { "Block Sequential", test_blockseq_comparison },

    { "Checkerboard", test_checkerboard_comparison },

    { "Bit Spread", test_bitspread_comparison },

    { "Bit Flip", test_bitflip_comparison },

    { "Walking Ones", test_walkbits1_comparison },

    { "Walking Zeroes", test_walkbits0_comparison },

#ifdef TEST_NARROW_WRITES   

    { "8-bit Writes", test_8bit_wide_random },

    { "16-bit Writes", test_16bit_wide_random },

#endif

*/

    { NULL, NULL }

};

相关内容