Jakie są najlepsze możliwe sposoby testowania pamięci RAM (bez ECC) pod linux / arm?

19

Chcę przetestować integralność i globalną wydajność układów pamięci bez ECC na niestandardowej płycie

Czy są jakieś narzędzia działające pod Linuksem, dzięki czemu mogę jednocześnie monitorować temperaturę systemową i globalną?

Czy istnieją jakieś ogólne testy, które nie są związane z ECC?

EDYCJA 1:

Wiem już, jak monitorować temperaturę (korzystam ze specjalnej funkcji platformy /sys/devices/platform/......../temp1_input).

Na razie :

  • wazoox: działa, ale muszę napisać własne testy
  • Jason Huntley:
    • ramspeed: nie działa na ramieniu
    • test porównawczy stream: działa i jest bardzo szybki, więc sprawdzę, czy jest dokładny i kompletny
    • memtest: Spróbuję później, ponieważ nie działa bezpośrednio z systemu Linux
    • stres dla fedory: Spróbuję później, jest to dla mnie zbyt problematyczne, aby zainstalować Fedorę teraz

Znalazłem tę dystrybucję: http://www.stresslinux.org/sl/

Będę nadal sprawdzać narzędzia działające bezpośrednio pod Linuksem bez zbyt dużych zależności, po czym może spróbuję rozwiązań takich jak stresslinux, memtest, stres dla fedory.

Dzięki za odpowiedzi, będę kontynuować dochodzenie

dusza
źródło
Byłoby to pomocne, jeśli podasz nam dystrybucję linuksa, z którą pracujesz. Czy prowadzisz dystrybucję serwera lub komputera stacjonarnego? Czy obejmuje XServer?
Jason Huntley
Używam linux 3.0 bare metal z busybox, rootfs jest na nfs, więc kompiluję narzędzia z innego hosta za pomocą kompilatora cross arm. Nie ma XServer.
moul

Odpowiedzi:

13

Oto sposób, w jaki czasami testuję ram: najpierw zamontuj dwa tmpfs (domyślnie tmpfs to połowa ram):

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

Sprawdź wolną pamięć i wolne miejsce:

# 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

Teraz wypełnij tmpfs 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

Możesz sprawdzić, czy twoja pamięć jest naprawdę pełna:

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

Teraz możesz uruchomić różne testy, na przykład sprawdzić, czy oba pliki tymczasowe są identyczne, bezpośrednio lub z uruchomionym programem md5sum, sha1sum itp.

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

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

O monitorowaniu temperatury znam tylko czujniki lm. Nie wiem, czy zarządza konkretnym sprzętem, ale prawdopodobnie i tak możesz spróbować.

wazoox
źródło
4
Na ten test będzie mieć wpływ pamięć podręczna procesora, ale jest to dobry pomysł.
Mircea Vutcovici
2
Nie testowałem się, ale Mircea prawdopodobnie ma rację: więc „echo 3> / proc / sys / vm / drop_caches” uwolni pagecache, dentries i i-węzły, które powinny to zrobić.
Manuel
Są to pamięci podręczne systemu plików, a nie pamięci podręczne procesora.
Mircea Vutcovici
1
+1 Ta ddmetoda (na starym AMD Athlon 64 3200+) dała mi wyniki konsekwentnie proporcjonalne do zmian prędkości zegara pamięci, co uważam za wystarczające. Nie jestem jednak pewien, dlaczego chcesz zatkać całą pamięć systemową /dev/zero- mój system zamarł, gdy próbowałem to zrobić.
Lumi
3
Zaadaptowałem to w prostym skrypcie bash, którego używam do testowania dostawców VPS - bitbucket.org/snippets/danielsokolowski/G5oeA
Daniel Sokolowski
7

Jakie są najlepsze możliwe sposoby testowania pamięci RAM (bez ECC) pod linux / arm?

RamSpeed ​​jest jedynym znanym mi narzędziem do testowania pamięci wieloplatformowej. Możesz go skompilować dla uzbrojenia, jeśli jest obsługiwane:

http://alasir.com/software/ramspeed/ , stary link nie działa, użyj:

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

Jeśli nie jest obsługiwany, być może możesz przeprowadzić test porównawczy za pomocą stream:

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

chcesz przetestować integralność i globalną wydajność układów pamięci bez ECC na niestandardowej płycie

Tutaj wielokrotnie używałem memtest do sprawdzania integralności i działa świetnie:

http://www.memtest.org/

* Uwaga, przeczytałem tylko to obsługuje Arm. Jednak nie testowałem na ramieniu.

Czy są jakieś narzędzia działające pod Linuksem, dzięki czemu mogę jednocześnie monitorować temperaturę systemową i globalną?

Jeśli używana dystrybucja obsługuje yum, możesz łatwo zainstalować lm_sensors:

mniam zainstaluj lm_sensors

Możesz także pobrać i skompilować z: tutaj http://www.lm-sensors.org/

Nie jestem jednak pewien, czy dostarczy danych o temperaturze dotyczących twojej pamięci. Twoja płyta główna musi mieć także czujniki do odczytu temperatury pamięci.

Czy istnieją jakieś ogólne testy, które nie są związane z ECC?

memtest obejmuje testy zarówno dla ECC, jak i non-ECC

Właśnie przypomniałem sobie ostatnią rzecz, którą możesz spróbować. Zdobądź fedora dla architektury uzbrojenia lub rpm. Możesz uruchomić pakiet warunków skrajnych, który przetestuje procesor i pamięć:

stress-1.0.4-4.fc13.armv5tel.rpm

Jeśli busybox ma dołączony instalator rpm, być może będziesz mógł wdrożyć jedną z rpmów z dystrybucji fedora.

Jason Huntley
źródło
Ciekawe, w jaki sposób link RAMspeed przekierowuje teraz do spamujących stron internetowych.
Ciro Santilli 24 改造 中心 法轮功 六四 事件
tak, wygląda na to, że ich strona zniknęła, aktualizuję link do github.
Jason Huntley
1

Napisz plik do istniejącego pliku tmpfs, takiego jak / tmp z dd, jak sugeruje wazoox, ale ogranicz jego rozmiar do mniej niż połowy wolnej pamięci.

Najpierw dowiedz się, ile pamięci jest dostępne:

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

Następnie napisz plik, w tym przypadku łącznie 4 GB, używając 4000 bloków 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

W ten sposób unikniesz zamiany i nie będziesz musiał niczego montować.

baldrianbandit
źródło
Wydaje się, że coś sztucznie ogranicza prędkość tmpfsna moich maszynach RHEL6 / 7. Dostaję te same 4 GB / s co ty, niezależnie od tego, czy uruchomię to polecenie na czterokanałowym urządzeniu DDR3-1866, czterokanałowym urządzeniu DDR4-2666, czy na tym samym komputerze z tylko dwoma kanałami pamięci. Powinny one zapisywać w pamięci odpowiednio przy 60, 85 i 42 GB / s, a nie 4 GB / s.
Mark Booth,
Może być dd po prostu robi pętle ze stałym interwałem oczekiwania, a tym samym ogranicza szybkość całej akcji. Spróbuj tego na odwrót: dd if = / dev / zero of = / tmp / testfile bs = 4000M count = 1
baldrianbandit
To bardzo dziwne, próbowałem z różnymi bsi countsi najlepsza kombinacja z, bs=512Kale nigdy nie przekracza 4,2 GB / s na maszynie, która daje 43 GB / s z testem porównawczym STREAM.
Mark Booth,
0

Użyłem memtest u-boot, są dwa testy (patrz u-boot / common / cmd_mem.c):

Pierwszy test jest prosty (zapis, sprawdzenie), drugi test jest aktywowany przez #define CONFIG_SYS_ALT_MEMTEST 1i dodaje więcej testów,

zadbaj o przekazanie offsetu początkowego (argv [1]) po przestrzeni pamięci u-boot, tj mtest 0x200000.

dusza
źródło