Geheugen
Bij problemen met de stabiliteit van je systeem (onverwacht hangen, crashen, enz kan je de logs nakijken en de onderdelen van je systeem controleren op verschillende manieren; hier het geheugen.
Hardware
Het geheugen kan samengesteld zijn uit verschillende geheugenmodules, die de vorm hebben van latjes met contacten, die in het moederbord zitten.
Deze hebben verschillende eigenschappen: de opslagcapaciteit (bv 1GB, 2, 4, 8..), aantal bits, het voltage, de snelheid, … en kunnen ook onderling verschillen; naargelang de mogelijkheden van het moederbord moeten ze gecombineerd worden, bv per twee. Gangbaar is om daarin telkens (bv twee of vier) samen aangekochte, op elkaar afgestemde modules te steken. Behandel de modules met zorg (statische electriciteit!).
Welk geheugen?
Je kan zien wat aanwezig is door naar de slots op het moederbord te kijken, of met een tool als lshw
(/usr/sbin/lshw
)
(Normaal uit standaard software repository, ong. 300k groot).
Installeren: sudo zypper install lshw
Gebruik: sudo lshw -C memory
Geeft bv:
*-memory
description: System Memory
physical id: 7
slot: System board or motherboard
size: 16GiB
capabilities: ecc
configuration: errordetection=multi-bit-ecc
*-bank:0
description: DIMM DDR4 Synchronous Registered (Buffered) 2133 MHz (0,5 ns)
product: M393A5143DB0-CPB
vendor: Samsung
physical id: 0
serial: 31CE22EC
slot: CPU0-DIMM1
size: 4GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-bank:1
description: DIMM DDR4 [empty]
physical id: 1
slot: CPU0-DIMM2
*-bank:2
description: DIMM DDR4 Synchronous Registered (Buffered) 2133 MHz (0,5 ns)
product: M393A5143DB0-CPB
vendor: Samsung
physical id: 2
serial: 31CE5DEC
slot: CPU0-DIMM3
size: 4GiB
width: 64 bits
clock: 2133MHz (0.5ns)
*-bank:3
description: DIMM DDR4 [empty]
physical id: 3
slot: CPU0-DIMM4
…
Testen
Het geheugen kan je testen met “memtest”, dat aanwezig is op installatiemedia (cd/dvd/usbstick).
Je kan memtest ook installeren op je computer; zoek “memtest86+”; klein en snel geïnstalleerd.
Daarna herstarten en memtest selecteren (bv: “openSUSE Leap 15.2 Memtest”).
(dus voor je systeem gestart is, bij de keuze van aanwezige besturingssystemen is “memtest” er in grub bij gekomen als extra opstart keuze.)
Bij een systeem dat regelmatig spontaan herstartte had ik duidelijk resultaat: onmiddellijk na de start werd scherm “rood” en kreeg ik ongelooflijk veel errors! (Zo snel? is de test wel juist vroeg ik me af?)
De helft van het geheugen verwijderd, de test gedraaid, dan verwisseld en de andere helft verwijderd en de test terug laten lopen. Het verschil is duidelijk, er is een probleem met één van de twee sets geheugenlatjes.
Nu uit de slechte set de boosdoener isoleren: steek één van de twee latjes in de computer en laat de test draaien; daarna het andere. In mijn geval was het duidelijk dat het éné geheugenlatje kapot was.
Check de richtlijnen voor het plaatsen van het geheugen; in mijn geval kon ik in slot 1 een enkele lat steken; en als ik per twee test, moeten twee dezelfde latjes in aangeduide slots geplaats worden (meestal ergens aangeduid in de binnenkant van de kast of bij de documentatie van het moederbord).
Na het verwijderen van de kapotte geheugenmodule gaf de computer geen probleem meer.
In dit geval was de slechte module zo slecht dat het er onmiddellijk uitkwam, maar er wordt hier en daar aangeraden de test toch te laten lopen tot minstens 8 (ik deed bv tot test 9), en je kan hem ook een nachtje door laten doen of 24 uur laten lopen als je herhaald wil testen om meer zekerheid te hebben.
Test 0: 1 cpu core test alle adres bits in alle geheugenbanken
Test 1: 1 cpu core schrijft en checkt consistentie van ieder adres.
Test 2: meer CPU’s doen test 1.
Test 3: met cache ingeschakeld allemaal 1-en of 0-en schrijven – zou belangrijkste “harde” fouten moet vinden.
Test 4: zoals test 3 maar met patronen van 8 bits; zou subtielere fouten moeten vinden.
Test 5: zoals 4 maar met random getallen; zou moeilijker te vinden fouten moeten vinden, moet best meer passes lopen.
Test 6: stress test waarbij block move wordt gebruikt; kan fout aan duiden maar niet het adres ervan.
Test 7: …
…
Test 10: initialiseert alle geheugen met een bepaald patroon, en wacht dan een paar minuten om te kijken of de inhoud stabiel gebleven is.
…
enz
Meer: https://www.memtest86.com/tech_individual-test-descr.html
Timing CAS, RAS, ..
Een geheugencel adresseren kost de kloktikken om een huidige rij te sluiten, de nieuwe rij te openen, de juiste colom te vinden.
tRAS + tRCD + tCAS
CAS
Een van de elementen die memtest toont is “CAS”, wat staat voor Column Address Strobe, en een vorm van vertraging aangeeft: namelijk hoeveel clocktikken het duurt alvorens het geheugen de waarden uit een “Column” van een open “Row” heeft opgehaald en doorgeeft nadat de CPU er om vraagt.
Hoe lager het CAS getal, hoe sneller dus. CAS timings kunnen verschillen per module, zelfs al hebben ze verder gelijkaardige eigenschappen (bv DDR4-3200). Nieuwer geheugen kan hogere CAS waarden hebben (bv 15 tov 5) maar in gebruik toch sneller zijn door de hogere kloksnelheid.
tRCD
RAS to CAS delay: het minimale aantal kloktikken dat de controller moet wachten om een nieuwe rij te openen.
tRP
Row Precharge: de controller moet minimaal zoveel klok tiks wachten om de huidige rij te sluiten
tRAS
Row Active time: aantal kloktiks wachten tussen openen en sluiten van een row
CMD
Command Rate: het aantal kloktikken dat een instructie aanwezig moet zijn om zeker te zijn dat ze gelezen is door het geheugen. Waarden als 1T en 2T.
Meer zie https://www.tomshardware.com/reviews/pc-memory-ram-frequency-timings,6328.html