下載地址: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 }
};