MemTest86 + (versionen inkluderet med Ubuntu 13.04) siger
Failing address: 002f796c48 - 759.5 MB
Hvad skal jeg angive i memmap
kerneparameteren for at omgå dette område?
Jeg har prøvet at køre memtester 770MB
og det siger alt er ok, så det ser ikke ud til, at MemTest-indikationerne betyder en fejl i 759,5. MB fra starten.
Sådan fortolkes denne MemTest-indikation for at konfigurere memmap
?
Jeg har ingen penge til at købe nyt RAM nu, og fejlen ser ud til at være enkelt, så jeg håber, jeg bare kan tilsidesætte den.
Kommentarer
- FWIW, kernen markerer visse sider som " reserveret " hvis den registrerer et dårligt segment men er i stand til at komme sig. Viser output fra " free -m " kræfter på to for totalerne? Jeg nævner dette som en måde at forklare, hvorfor memtester kan kan ikke se den dårlige RAM, men memtest86 + kan.
- Ser ikke ' ikke ud som magt to aktivt: i.stack.imgur.com/l86L1.png
- Når der opdages en fejl (hvis du endda har ecc ram), er det generelt for sent. Også gratis -m rapporterer aldrig en jævn styrke på to, da bios og kernen begge reserverer en ram.
- Jeg drømmer om at købe en ECC-bærbar computer, men kunne aldrig finde nogen tilgængelige tilbud, ser ud til at de ikke ' eksisterer ikke.
- Ser ud som kernen printk ' s når den finder en dårlig side (linje 264-265).
Svar
memmap
Der er denne vejledning med titlen: Bad Memory HowTo , der diskuterer deaktivering af hukommelse via kernen ved hjælp af memmap
argument til kernen. Ifølge howto har du to muligheder, når det kommer til memmap
:
- Sluk alt efter den dårlige hukommelse –
(mem=###M option)
- Sluk kun hukommelsen omkring den dårlige hukommelse –
(memmap=#M$###M option)
Med den første mulighed, hvis memtest rapporterer, at der er dårlig hukommelse ved 600M, kan du deaktivere RAM fra dette punkt op til slutningen af RAM med dette:
mem=595M
Hvis der ” s dårlige RAM ved 802M og 807M, kan du deaktivere en 10M sektion RAM, der starter ved 800M sådan:
memmap=10M$800M
BEMÆRK: Dette vil sortliste 10M efter 800M basisadressen. Du skal køre memtest86+
bagefter for at bekræfte, at dette argument er korrekt.
BadRAM
Der er en patch tilgængelig til Ubuntu, der hedder BadRam. Det er meget godt dækket her i dette indlæg med titlen: BadRAM på Ubuntu-fællesskabet site.
Når du har anvendt patch til kernen ved hjælp af detaljerne fra denne side, foretager du ændringer i din Grub2-opsætning:
uddrag fra dette site til Grub2
GRUB2-konfigurationsfilen i Natty har en linje til konfiguration af kerne-dårlige ram-ekskluderinger. Så jeg antager, at det er den foretrukne måde at kortlægge en del af hukommelsen, der viser fejl. Den linje, jeg satte, var
GRUB_BADRAM = “0x7DDF0000,0xffffc000”
Den foreslåede måde på hvert websted, jeg kunne finde, var at indstille dette var at køre memtest86 og lade det vise dig BadRAM-indstillinger. memtest86 gav mig en side med ting, som jeg ville have været nødt til at komme ind på. Jeg kunne se, at alle adresserne var i en 16K-blok, så jeg ville bare kortlægge den 16K-blok uden for handling. Sådan genererede jeg den korrekte post.
Den første parameter er let. Det er den basale adresse på den dårlige hukommelse. I mit tilfælde kunne jeg se, at alle de dårlige adresser var større end 0x7DDF0000 og mindre end 0x7DDF4000. Så jeg tog starten på 16K-blokken som min startadresse.
Den anden parameter er en maske. Du sætter 1er, hvor det adresseområde, du ønsker, deler de samme værdier og 0er, hvor det vil variere. Dette betyder, at du skal vælge dit adresseområde, så kun bitene med lav ordre varierer. Når man ser på min adresse, er den første del af masken let. Du vil starte med 0xffff. For det næste nibble vil jeg forklare med bit maps. Jeg vil variere fra 0000 til 0011. Så masken til badram ville være 1100 eller en hex c. De sidste 3 nibbles skal være alle 0erne i masken, da vi vil have hele sortimentet kortlagt. Så vi får et samlet resultat på 0xffffc000.
Efter at have indstillet denne linje i / etc / default / grub, kørte jeg sudo update-grub og genstartede, og min dårlige hukommelse blev ikke længere brugt. Ingen kerneopdateringer er nødvendige for at kortlægge dårlig hukommelse ved hjælp af denne metode.
Opfølgning nr. 1
Kigger gennem wikipedia-siden for memtest86 + står det som følger:
uddrag fra Memtest86 wikipedia-side
Fra Memtest86 2.3 og Memtest86 + 1.60 kan programmet sende en liste over dårlige RAM-regioner i det format, der forventes af BadRAM-patch til Linux-kernen; ved hjælp af disse oplysninger kan et Linux-system pålideligt bruge et RAM-modul, selvom det har et par dårlige bits. Grub2 er i stand til at levere de samme oplysninger til en ikke-patchet kerne, hvilket nægter behovet for BadRAM-patch.
Også stødte jeg på denne Gentoo-side , der specificerede memmap=...
ved hjælp af en hex-adresse, så du kunne angive den således:
memmap=5M$0x2f796c48
5M er bare et gæt, selvfølgelig kan du justere det lavere eller højere afhængigt af hvor meget RAM omkring den region, du vil / har brug for at udelade.
Endelig kan du også angive størrelsen i hex:
memmap=0x10000$0x2f796c48
Ville ignorere 64 KB startende ved adresse 0x2f796c48.
Referencer
Kommentarer
- " 800M til 804M " formodes at være " 800M til 810M " I antag …
- Det kan være, men det, jeg skrev, er også OK, selvom det ' kaster mere hukommelse end 4M mellem 800M og 810M.
- 1. Jeg ved om
memmap
, men spørgsmålet handler mere om, hvordan man fortolker memtest86 + output. Jeg har givet et specifikt eksempel på memtest86 + output og spørg for hjælp til at konfigurerememmap
i overensstemmelse hermed i dette særlige tilfælde. 2. Du skal køre memtest86 + bagefter for at bekræfte, at dette argument er korrekt. " – memtest86 + kører før en OS-kerne, så jeg tvivler alvorligtmemmap
Linux-kernemuligheden kan påvirke den. - @Ivan, 1. Jeg troede, det var indlysende med de eksempler, jeg inkluderede, men du ' d har brug for at sige noget som:
memmap=5M$759M
til din særlige sag, givet memtest86 + mislykkes ved 759,5 MB. 2. Jeg mente, at du også skulle overførememmap=...
til memtest86 +. Det var uprøvet / ubekræftet af mig, men noget, du muligvis kan gøre med memtest86 +. - Ok, tak. Jeg var ikke sikker på, hvad betyder " 002f796c48 – 759,5 MB " (måske kan det være 759,5 megs efter 002f796c48-adressen eller noget lignende ) og jeg har aldrig mistanke om, at jeg kan videregive Linux-kerneparametre til MemTest86 + (jeg troede, at det i sig selv ikke var noget at gøre med Linux).
Svar
Memtest86 + (jeg brugte 4.20) kan sende et badram-format direkte.
-
Tryk på “c” for at komme til konfigurationsdialogen
-
Derefter “4” for “Fejlrapporttilstand”
-
Derefter “3” til “BadRAM-mønstre”
Outputtet skifter fra en liste over individuelle testfejl til en serie badram = linjer, der hver indeholder endnu en ny dårlig sektor. Fordi linjerne tilføjes og sammenkobles tilstødende segmenter, kan du bare køre testen hovedløs natten over og bruge den endelige trykte linje (selvom hvis du har en rigtig dårlig dæmpning, vil det mindre nøjagtige format “5 megs omkring dette punkt” sandsynligvis være ret kortere
Endeligt resultat:
Kommentarer
- Hvis jeg ikke ' ikke skal kopiere det med hånden og i stedet aflevere det til GRUB uden at indtaste fejl igen, ville det være fantastisk.
- Hvad jeg gjorde er at tage et billede af det (kameratelefon), indlæse det i GIMP, = > gråtoner = > invert = > contrast / gamma og aflever det derefter til
tesseract ${IMG} stdout
.. bekræftes og rettes derefter linjen, før den indsættes i / etc / default / grub … Det tog sandsynligvis lige så lang tid som manuelt at indtaste det med det samme ^^ - Absolut sjovere end at gøre det manuelt tho ugh
Svar
Meget beskidt og meget flot arbejde: Kør en brugerrums-memtester, vent til den finder en fejl. Lad det for eksempel være ved 0xfce2ea31.
Kør derefter igen memtester, men på den fysiske adresse, så:
memtester -p 0xfce20000 64k 128
At være sikkert, det er bedre, hvis du ofrer mere end siden med den problematiske adresse.Her ofrede vi 64kByte omkring den defekte adresse.
Hvis alt gik godt, finder det den defekte hukommelsesplacering langt hurtigere igen.
Derefter suspenderer memtester-processen med en ctrl / z.
Konsekvens: indtil memtester-processen er suspenderet, vil den ikke fjerne mere ressource, men ingen anden proces kan få adgang til den defekte hukommelse . Fordi den tildeles af memtesteren.
Særligt nyttig på store, eksterne servere. Den suspenderede proces kan bliv indtil den nye RAM ikke sendes. Eller måske indtil næste jul, hvor en nedetid ikke er så stort problem.
Kommentarer
- I stedet for dette trick kan du også bruge
chmem
værktøjet i util-linux til at fortælle kernen at tage et bestemt hukommelsesområde offline (flytte dataene et andet sted og derefter aldrig genbruge siderne) . - @TooTea Jeg prøvede dette værktøj på flere maskiner, og det kunne ikke d deaktiver en enkelt hukommelsesblok.