¿Cuáles son las mejores formas posibles de comparar RAM (sin ECC) en linux / arm?

19

Quiero probar la integridad y el rendimiento global de los chips de memoria sin ECC en una placa personalizada

¿Hay algunas herramientas que se ejecutan en Linux para que pueda monitorear el sistema y la temperatura global al mismo tiempo?

¿Hay algunas pruebas específicas sin ECC para hacer en general?

EDITAR 1:

Ya sé cómo controlar la temperatura (utilizo una función de plataforma especial /sys/devices/platform/......../temp1_input).

Por ahora :

  • wazoox: funciona pero tengo que codificar mis propias pruebas
  • Jason Huntley:
    • ramspeed: no funciona en el brazo
    • referencia de transmisión: funciona y es muy rápido, así que veré si es preciso y completo
    • memtest: lo intentaré más tarde, ya que no se ejecuta directamente desde Linux
    • estrés para fedora: lo intentaré más tarde también, es demasiado problemático para mí instalar fedora ahora

Encontré esta distribución: http://www.stresslinux.org/sl/

Continuaré verificando herramientas que se ejecutan directamente bajo Linux sin dependencias demasiado grandes, después de que tal vez intente soluciones como stresslinux, memtest, stress for fedora.

Gracias por tus respuestas, continuaré investigando

moul
fuente
Sería útil si nos proporciona la distribución de Linux con la que está trabajando. ¿Está ejecutando un servidor o una distribución de escritorio? ¿Incluye XServer?
Jason Huntley
Uso Linux bare metal con busybox, rootfs está en nfs, así que compilo herramientas de otro host con un compilador cruzado de brazo. No hay XServer.
moul

Respuestas:

13

Esta es la forma en que a veces pruebo ram: primero monte dos tmpfs (por defecto tmpfs es la mitad del ram):

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

Verifique la memoria libre y el espacio libre:

# 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

Ahora llena los tmpfs con dd:

# 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

Puede verificar que su memoria esté bastante llena:

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

Ahora puede ejecutar varias pruebas, por ejemplo, verificar que ambos archivos temporales sean idénticos, directamente o ejecutando md5sum, sha1sum, etc.

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

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

Sobre el monitoreo de temperatura, solo conozco los sensores lm. No sé si administra su hardware en particular, pero probablemente podría intentarlo de todos modos.

wazoox
fuente
44
Este punto de referencia se verá afectado por el caché de la CPU, pero es una buena idea.
Mircea Vutcovici
2
No me probé a mí mismo, pero Mircea probablemente tenga razón: entonces "echo 3> / proc / sys / vm / drop_caches" para liberar pagecaches, dentries e inodes, eso debería hacerlo.
Manuel
Esos son cachés del sistema de archivos, no cachés de CPU.
Mircea Vutcovici
1
+1 Este ddmétodo (en un viejo AMD Athlon 64 3200+) me ha dado resultados consistentemente proporcionales a los cambios en la velocidad del reloj de memoria, lo que considero que es lo suficientemente bueno. Sin embargo, no estoy seguro de por qué querrías obstruir toda la memoria del sistema /dev/zero: mi sistema se congeló cuando intenté hacerlo.
Lumi
3
He adaptado esto en un script bash simple que utilizo para comparar proveedores de VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski
7

¿Cuáles son las mejores formas posibles de comparar RAM (sin ECC) en linux / arm?

RamSpeed ​​es la única herramienta de referencia de memoria multiplataforma que conozco. Es posible que pueda compilarlo para armar, si es compatible:

http://alasir.com/software/ramspeed/ , el enlace anterior está muerto, use:

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

Si no es compatible, es posible que pueda realizar una evaluación comparativa mediante la transmisión:

http://www.cs.virginia.edu/stream/ref.html

desea probar la integridad y el rendimiento global de los chips de memoria sin ECC en una placa personalizada

Aquí, he usado memtest en muchas ocasiones para verificar la integridad y funciona muy bien:

http://www.memtest.org/

* Nota, solo he leído que esto es compatible con Arm. Sin embargo, no he probado en un brazo.

¿Hay algunas herramientas que se ejecutan en Linux para que pueda monitorear el sistema y la temperatura global al mismo tiempo?

Si la distribución que está utilizando admite yum, puede instalar fácilmente lm_sensors:

yum install lm_sensors

También puede descargar y compilar desde: aquí http://www.lm-sensors.org/

Sin embargo, no estoy seguro de que proporcione datos de temperatura con respecto a su memoria. Su placa base también debe tener sensores para leer la temperatura de la memoria.

¿Hay algunas pruebas específicas sin ECC para hacer en general?

memtest incluye pruebas para ECC y no ECC

Acabo de recordar una última cosa que podrías probar. Obtenga fedora para la arquitectura de brazo o las rpm. Puede ejecutar el paquete de estrés que pondrá a prueba su CPU y memoria:

stress-1.0.4-4.fc13.armv5tel.rpm

Si busybox tiene un instalador rpm empaquetado, es posible que pueda implementar uno de los rpms de brazo desde la distribución de fedora.

Jason Huntley
fuente
Interesante cómo el enlace RAMspeed ahora redirige a sitios web spam.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sí, parece que su sitio se ha ido, actualizando el enlace a github.
Jason Huntley
1

Escriba un archivo en un tmpfs existente como / tmp con dd como sugiere wazoox, pero limite su tamaño a menos de la mitad de su memoria libre.

Primero, averigüe cuánta memoria está disponible:

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

Luego, escriba un archivo, en este caso 4GB en total usando 4000 bloques de 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

De esta forma evitará el intercambio y no es necesario montar nada.

Baldrianbandit
fuente
Algo parece estar limitando artificialmente la velocidad de tmpfsmis máquinas RHEL6 / 7. Obtengo los mismos 4GB / s que usted si ejecuto este comando en la máquina DDR3-1866 de cuatro canales, una máquina DDR4-2666 de cuatro canales o esa misma máquina con solo dos canales de memoria ocupados. Deben escribirse en la memoria a 60, 85 y 42 GB / s respectivamente, no a 4 GB / s.
Mark Booth
Podría ser simplemente hacer bucles con un intervalo de espera constante y, por lo tanto, limitar la velocidad de toda la acción. Pruébelo al revés: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
Es muy raro, he tratado con una variedad de bse counts y la mejor combinación fue con bs=512Kpero nunca pasa por encima de 4.2GB / s en una máquina que da 43 GB / s con el punto de referencia de la corriente.
Mark Booth
0

Utilicé memtest de u-boot, hay dos pruebas (ver u-boot / common / cmd_mem.c):

La primera prueba es simple (escribir, verificar), la segunda prueba se activa #define CONFIG_SYS_ALT_MEMTEST 1y agrega más pruebas,

tenga cuidado de pasar un desplazamiento de inicio (argv [1]) después del espacio de memoria u-boot, es decir mtest 0x200000.

moul
fuente