Quelles sont les meilleures façons de comparer la RAM (sans ECC) sous Linux / ARM?

19

Je veux tester l'intégrité et les performances globales des puces mémoire sans ECC sur une carte personnalisée

Existe-t-il des outils qui fonctionnent sous Linux pour que je puisse surveiller le système et la température globale en même temps?

Y a-t-il des tests spécifiques sans ECC à faire en général?

EDIT 1:

Je sais déjà comment surveiller la température (j'utilise une fonctionnalité de plate-forme spéciale /sys/devices/platform/......../temp1_input).

Pour l'instant :

  • wazoox: ça marche mais je dois coder mes propres tests
  • Jason Huntley:
    • ramspeed: ne fonctionne pas sur le bras
    • référence de flux: cela fonctionne et est très rapide, donc je vais vérifier si c'est précis et complet
    • memtest: je vais essayer plus tard, car il ne fonctionne pas directement depuis linux
    • stress pour fedora: j'essaierai plus tard aussi, c'est trop problématique pour moi d'installer fedora maintenant

J'ai trouvé cette distribution: http://www.stresslinux.org/sl/

Je continuerai à vérifier les outils qui s'exécutent directement sous linux sans trop grandes dépendances, après je vais peut-être essayer des solutions comme stresslinux, memtest, stress for fedora.

Merci pour vos réponses, je vais continuer à enquêter

moul
la source
Il serait utile que vous nous fournissiez la distribution Linux avec laquelle vous travaillez. Exécutez-vous une distribution de serveur ou de bureau? Comprend-il XServer?
Jason Huntley
J'utilise linux 3.0 bare metal avec busybox, rootfs est sur nfs, donc je compile les outils d'un autre hôte avec un compilateur croisé. Il n'y a pas de XServer.
moul

Réponses:

13

Voici comment je teste parfois le ram: montez d'abord deux tmpfs (par défaut, tmpfs est la moitié du ram):

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

Vérifiez la mémoire et l'espace 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

Remplissez maintenant les tmpfs avec 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

Vous pouvez vérifier que votre mémoire est effectivement assez pleine:

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

Vous pouvez maintenant exécuter divers tests, par exemple vérifier que les deux fichiers temporaires sont identiques, directement ou en exécutant md5sum, sha1sum, etc.:

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

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

Concernant la surveillance de la température, je ne connais que les capteurs lm. Je ne sais pas s'il gère votre matériel particulier, mais vous pourriez probablement essayer de toute façon.

wazoox
la source
4
Ce benchmark sera affecté par le cache CPU, mais c'est une bonne idée.
Mircea Vutcovici
2
Je ne me suis pas testé, mais Mircea a probablement raison: je voudrais donc "echo 3> / proc / sys / vm / drop_caches" pour libérer les pagecaches, les denteries et les inodes, cela devrait le faire.
Manuel
Ce sont des caches de système de fichiers, pas des caches de CPU.
Mircea Vutcovici
1
+1 Cette ddméthode (sur un ancien AMD Athlon 64 3200+) m'a donné des résultats toujours proportionnels aux changements de vitesse d'horloge de la mémoire, ce que je considère comme suffisant. Je ne sais pas, cependant, pourquoi vous voudriez obstruer toute la mémoire du système /dev/zero- mon système a gelé lorsque j'ai essayé de le faire.
Lumi
3
J'ai adapté cela dans un script bash simple que j'utilise pour comparer les fournisseurs VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski
7

Quelles sont les meilleures façons de comparer la RAM (sans ECC) sous Linux / ARM?

RamSpeed ​​est le seul outil de référence de mémoire multiplateforme que je connaisse. Vous pourrez peut-être le compiler pour arm, s'il est pris en charge:

http://alasir.com/software/ramspeed/ , l'ancien lien est mort, utilisez:

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

Si ce n'est pas pris en charge, vous pourrez peut-être comparer en utilisant stream:

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

veulent tester l'intégrité et les performances globales des puces de mémoire sans ECC sur une carte personnalisée

Ici, j'ai utilisé memtest à plusieurs reprises pour le contrôle d'intégrité et cela fonctionne très bien:

http://www.memtest.org/

* Remarque, je n'ai lu que cela prend en charge Arm. Cependant, je n'ai pas testé sur un bras.

Existe-t-il des outils qui fonctionnent sous Linux pour que je puisse surveiller le système et la température globale en même temps?

Si la distribution que vous utilisez prend en charge yum, vous pouvez facilement installer lm_sensors:

yum install lm_sensors

Vous pouvez également télécharger et compiler à partir de: ici http://www.lm-sensors.org/

Cependant, je ne suis pas certain qu'il fournira des données de température concernant votre mémoire. Votre carte mère doit également avoir des capteurs pour lire la température mem.

Y a-t-il des tests spécifiques sans ECC à faire en général?

memtest comprend des tests pour ECC et non ECC

Je viens juste de me souvenir d'une dernière chose que vous pourriez essayer. Obtenez Fedora pour l'architecture de bras ou le RPM. Vous pouvez exécuter le package de stress qui testera votre CPU et votre mémoire:

stress-1.0.4-4.fc13.armv5tel.rpm

Si busybox dispose d'un programme d'installation rpm, vous pouvez peut-être déployer l'un des rpms de bras de la distribution fedora.

Jason Huntley
la source
Intéressant de voir comment le lien RAMspeed redirige désormais vers des sites Web indésirables.
Ciro Santilli 24 改造 中心 法轮功 六四 事件
oui, on dirait que leur site a disparu, mettant à jour le lien vers github.
Jason Huntley
1

Écrivez un fichier dans un tmpfs existant comme / tmp avec dd comme le suggère wazoox, mais limitez sa taille à moins de la moitié de votre mémoire libre.

Tout d'abord, découvrez la quantité de mémoire disponible:

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

Ensuite, écrivez un fichier, dans ce cas 4 Go au total en utilisant 4000 blocs de 1 Mo:

> 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 cette façon, vous éviterez l'échange et il n'est pas nécessaire de monter quoi que ce soit.

baldrianbandit
la source
Quelque chose semble artificiellement limiter la vitesse de tmpfsmes machines RHEL6 / 7. J'obtiens les mêmes 4 Go / s que vous, que j'exécute cette commande sur une machine DDR3-1866 à quatre canaux, une machine DDR4-2666 à quatre canaux ou cette même machine avec seulement deux canaux de mémoire remplis. Celles-ci doivent être écrites en mémoire à 60, 85 et 42 Go / s respectivement, et non à 4 Go / s.
Mark Booth du
Peut-être que dd fait simplement des boucles avec un intervalle d'attente constant et donc, limite la vitesse de l'action entière. Essayez l'inverse: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
C'est très étrange, j'ai essayé avec une variété de bset counts et la meilleure combinaison était avec bs=512Kmais ça ne dépasse jamais 4,2 Go / s sur une machine qui donne 43 Go / s avec le benchmark STREAM.
Mark Booth
0

J'ai utilisé le memtest de u-boot, il y a deux tests (voir u-boot / common / cmd_mem.c):

Le premier test est simple (écriture, vérification), le second test est activé par #define CONFIG_SYS_ALT_MEMTEST 1et ajoutez plus de tests,

prenez soin de passer un décalage de début (argv [1]) après l'espace mémoire u-boot, c'est-à-dire mtest 0x200000.

moul
la source