在 Linux / Arm 下对 RAM(无 ECC)进行基准测试的最佳方法是什么?

在 Linux / Arm 下对 RAM(无 ECC)进行基准测试的最佳方法是什么?

我想在定制主板上测试无 ECC 内存芯片的完整性和整体性能

是否有一些可以在 Linux 下运行的工具,以便我可以同时监控系统和全局温度?

一般来说,是否有一些非 ECC 特定的测试可做?

编辑1:

我已经知道如何监控温度(我使用特殊的平台功能 /sys/devices/platform/......../temp1_input)。

目前 :

  • wazoox :它可以工作,但我必须编写自己的测试
  • 杰森·亨特利:
    • ramspeed :在 arm 上不起作用
    • 流基准测试:它运行良好,速度非常快,所以我会看看它是否准确和完整
    • memtest:我稍后会尝试,因为它不能直接从 linux 运行
    • fedora 的压力:我稍后也会尝试,现在安装 fedora 对我来说太麻烦了

我发现了这个分布:http://www.stresslinux.org/sl/

我将继续检查那些直接在 Linux 下运行而没有太大依赖性的工具,之后我可能会尝试诸如 Stresslinux、memtest、Fedora 的 Stress 之类的解决方案。

谢谢你的回答,我会继续调查

答案1

这是我有时测试 RAM 的方法:首先挂载两个 tmpfs(默认情况下 tmpfs 是 RAM 的一半):

# mount -t tmpfs /mnt/test1 /mnt/test1
# mount -t tmpfs /mnt/test2 /mnt/test2

检查可用内存和可用空间:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     234760      17316          0      75856      62328
-/+ buffers/cache:      96576     155500
Swap:      1048820        332    1048488

# df -h -t tmpfs
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur
tmpfs                 124M     0  124M   0% /lib/init/rw
udev                   10M  104K  9,9M   2% /dev
tmpfs                 124M     0  124M   0% /dev/shm
/mnt/test1            124M     0  124M   0% /mnt/test1
/mnt/test2            124M     0  124M   0% /mnt/test2

现在用 dd 填充 tmpfs:

# dd if=/dev/zero of=/mnt/test1/test bs=1M 
dd: écriture de `/mnt/test1/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 1,81943 seconde, 70,8 MB/s

# dd if=/dev/zero of=/mnt/test2/test bs=1M 
dd: écriture de `/mnt/test2/test': Aucun espace disponible sur le périphérique
123+0 enregistrements lus
122+0 enregistrements écrits
128802816 octets (129 MB) copiés, 5,78563 seconde, 22,3 MB/s

你可以检查一下你的内存是否确实满了:

# free
             total       used       free     shared    buffers     cached
Mem:        252076     248824       3252          0       1156     226380
-/+ buffers/cache:      21288     230788
Swap:      1048820      50020     998800

现在您可以运行各种测试,例如直接检查两个临时文件是否相同,或者运行 md5sum、sha1sum 等:

# time cmp /mnt/test1/test /mnt/test2/test 

real    0m4.328s
user    0m0.041s
sys     0m1.117s

关于温度监控,我只知道 lm-sensors。我不知道它是否能管理你的特定硬件,但无论如何你都可以尝试一下。

答案2

在 Linux / Arm 下对 RAM(无 ECC)进行基准测试的最佳方法是什么?

RamSpeed 是我所知道的唯一一款多平台内存基准测试工具。如果支持,您可能能够为 arm 编译它:

https://github.com/cruvolo/ramspeed-smp

如果不支持,您可能能够使用流进行基准测试:

https://web.archive.org/web/20211104122453/http://www.cs.virginia.edu/stream/

想要在定制主板上测试无 ECC 内存芯片的完整性和整体性能

在这里,我曾多次使用 memtest 进行完整性检查,效果很好:

http://www.memtest.org/

*注意,我只读到过它支持 Arm。但是,我还没有在 Arm 上测试过。

是否有一些可以在 Linux 下运行的工具,以便我可以同时监控系统和全局温度?

如果您使用的发行版支持 yum,您可以轻松安装 lm_sensors:

yum 安装 lm_sensors

你也可以从这里下载并编译:http://www.lm-sensors.org/

但是,我不确定它是否会提供有关内存的温度数据。您的主板还必须有读取内存温度的传感器。

一般来说,是否有一些非 ECC 特定的测试可做?

memtest 确实包括 ECC 和非 ECC 测试

我刚想起最后一件事你可以尝试。获取适用于 arm 架构的 fedora 或 rpm。你可以运行压力包,它将对你的 CPU 和内存进行压力测试:

压力-1.0.4-4.fc13.armv5tel.rpm

如果 busybox 中有一个 rpm 安装程序,您可能能够部署 fedora 发行版中的一个 arm rpm。

答案3

按照 wazoox 的建议,使用 dd 将文件写入现有的 tmpfs(如 /tmp),但将其大小限制为可用内存的一半以下。

首先,找出有多少可用内存:

> free -h                                                                       
              total        used        free      shared  buff/cache  available 
Mem:            15G        3.0G         11G        540M        1.0G         11G 
Swap:            9G        1.2M          9G                                     

然后,写入一个文件,在本例中总共 4GB,使用 4000 个 1MB 的块:

> dd if=/dev/zero of=/tmp/testfile bs=1M count=4000 
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB, 3.9 GiB) copied, 1.1395 s, 3.7 GB/s

这样,您将避免交换,而且不需要安装任何东西。

答案4

我使用了 u-boot 的 memtest,有两个测试(参见 u-boot/common/cmd_mem.c):

第一个测试很简单(编写、检查),第二个测试通过#define CONFIG_SYS_ALT_MEMTEST 1并添加更多测试来激活,

注意在 u-boot 内存空间之后传递起始偏移量(argv[1]),即mtest 0x200000

相关内容