Quali sono i modi migliori per eseguire il benchmark della RAM (no-ECC) sotto linux / arm?


19

Voglio testare l'integrità e le prestazioni globali dei chip di memoria senza ECC su una scheda personalizzata

Ci sono alcuni strumenti che funzionano su Linux in modo da poter monitorare il sistema e la temperatura globale allo stesso tempo?

Ci sono alcuni test specifici senza ECC da fare in generale?

MODIFICA 1:

So già come monitorare la temperatura (utilizzo una speciale piattaforma /sys/devices/platform/......../temp1_input).

Per adesso :

  • wazoox: funziona ma devo codificare i miei test
  • Jason Huntley:
    • ramspeed: non funziona sul braccio
    • stream stream: funziona ed è molto veloce, quindi vedrò se è accurato e completo
    • memtest: ci proverò più tardi, poiché non funziona direttamente da Linux
    • stress per fedora: ci proverò anche dopo, è troppo problematico per me installare fedora ora

Ho trovato questa distribuzione: http://www.stresslinux.org/sl/

Continuerò a controllare gli strumenti che funzionano direttamente su Linux senza dipendenze troppo grandi, dopo forse proverò a soluzioni come stresslinux, memtest, stress per fedora.

Grazie per le risposte, continuerò a indagare


Sarebbe utile se ci fornissi la distribuzione di Linux con cui stai lavorando. Stai eseguendo una distribuzione server o desktop? Include XServer?
Jason Huntley il

Uso linux 3.0 bare metal con busybox, rootfs è su nfs, quindi compilo strumenti da un altro host con un compilatore arm cross. Non c'è XServer.
Moul

Risposte:


13

Ecco come a volte collaudo ram: prima monto due tmpfs (per impostazione predefinita tmpfs è metà del ram):

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

Controlla memoria libera e spazio libero:

# 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

Ora riempi i 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

Puoi verificare che la tua memoria sia effettivamente abbastanza piena:

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

Ora puoi eseguire vari test, ad esempio controlla che entrambi i file temporanei siano identici, direttamente o eseguendo md5sum, sha1sum, ecc:

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

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

Per quanto riguarda il monitoraggio della temperatura, conosco solo i sensori lm. Non so se gestisce il tuo hardware particolare, ma probabilmente potresti provarlo comunque.


4
Questo benchmark sarà influenzato dalla cache della CPU, ma è una buona idea.
Mircea Vutcovici,

2
Non mi sono messo alla prova, ma Mircea probabilmente ha ragione: quindi "echo 3> / proc / sys / vm / drop_caches" per liberare pagecache, dentries e inode, che dovrebbero farlo.
Manuel,

Quelle sono le cache del file system, non le cache della CPU.
Mircea Vutcovici,

1
+1 Questo ddmetodo (su un vecchio AMD Athlon 64 3200+) mi ha dato risultati costantemente proporzionali ai cambiamenti nella velocità del clock di memoria, che presumo significhi che è abbastanza buono. Non sono sicuro, tuttavia, del motivo per cui vorresti ostruire l'intera memoria del sistema /dev/zero: il mio sistema si è bloccato quando ho tentato di farlo.
Lumi,

3
L'ho adattato in un semplice script bash che utilizzo per confrontare i provider VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski il

7

Quali sono i modi migliori per eseguire il benchmark della RAM (no-ECC) sotto linux / arm?

RamSpeed ​​è l'unico strumento di benchmark di memoria multipiattaforma di cui sono a conoscenza. Potresti essere in grado di compilarlo per arm, se supportato:

http://alasir.com/software/ramspeed/ , il vecchio link è morto, utilizzare:

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

Se non è supportato, potresti essere in grado di eseguire il benchmark utilizzando lo stream:

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

desidera testare l'integrità e le prestazioni globali dei chip di memoria senza ECC su una scheda personalizzata

Qui, ho usato memtest in molte occasioni per il controllo dell'integrità e funziona benissimo:

http://www.memtest.org/

* Nota, ho letto solo che supporta Arm. Tuttavia, non ho ancora testato su un braccio.

Ci sono alcuni strumenti che funzionano su Linux in modo da poter monitorare il sistema e la temperatura globale allo stesso tempo?

Se la distribuzione che stai utilizzando supporta yum, puoi installare facilmente lm_sensors:

yum installa lm_sensors

Puoi anche scaricare e compilare da: qui http://www.lm-sensors.org/

Tuttavia, non sono sicuro che fornirà i dati di temperatura relativi alla tua memoria. La scheda madre deve inoltre disporre di sensori per la lettura della temperatura mem.

Ci sono alcuni test specifici senza ECC da fare in generale?

memtest include test per ECC e non ECC

Ho appena ricordato un'ultima cosa che potresti provare. Ottieni fedora per l'architettura del braccio o il numero di giri. Puoi eseguire il pacchetto di stress che metterà alla prova la tua CPU e la tua memoria:

stress 1.0.4-4.fc13.armv5tel.rpm

Se busybox ha un programma di installazione rpm fornito con esso, potresti essere in grado di distribuire uno dei bracci rpms dalla distribuzione fedora.


Interessante come il link RAMspeed ora reindirizzi a siti Web di spam.
Ciro Santilli 24 改造 中心 法轮功 六四 事件

sì, sembra che il loro sito sia sparito, aggiornando il link a github.
Jason Huntley il

1

Scrivi un file in un tmpfs esistente come / tmp con dd come suggerito da Wazoox, ma limitane le dimensioni a meno della metà della tua memoria libera.

Innanzitutto, scopri quanta memoria è disponibile:

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

Quindi, scrivi un file, in questo caso 4 GB in totale usando 4000 blocchi da 1 MB:

> 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

In questo modo eviterai lo scambio e non dovrai montare nulla.


Qualcosa sembra limitare artificialmente la velocità delle tmpfsmie macchine RHEL6 / 7. Ottengo i tuoi stessi 4 GB / s se eseguo questo comando su una macchina DDR3-1866 quad-channel, una macchina DDR4-2666 quad-channel o quella stessa macchina con solo due canali di memoria popolati. Questi dovrebbero essere scritti in memoria a 60, 85 e 42 GB / s in modo rispettivo, non 4 GB / s.
Mark Booth,

Potrebbe essere solo fare loop con un intervallo di attesa costante e, quindi, limitare la velocità dell'intera azione. Prova al contrario: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit

È molto strano, ho provato con una varietà di bse se countla migliore combinazione era con bs=512Kma non va mai oltre 4,2 GB / s su una macchina che dà 43 GB / s con il benchmark STREAM.
Mark Booth,

0

Ho usato il memtest di u-boot, ci sono due test (vedi u-boot / common / cmd_mem.c):

Il primo test è semplice (scrittura, controllo), il secondo test è attivato da #define CONFIG_SYS_ALT_MEMTEST 1e aggiunge altri test,

occupati di passare un offset iniziale (argv [1]) dopo lo spazio di memoria u-boot, ad es mtest 0x200000.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.