Comment une erreur de mémoire à un bit affectera-t-elle Linux?

4

Je reconstruis un système AMD Athlon 5000 vieux de trois ans doté d'une carte mère "ASRock NF7G-FullHD" avec 4 emplacements mémoire, intitulée "DDR2 800", qui aurait une capacité de mémoire vive de 8 Go au total. Outre 550W PS et 500 Go de disque, j'ai acheté une "paire appariée" de 2 ch. Les modules DIMM de 2 Go qui, malheureusement, présentent des erreurs persistantes à un bit à plusieurs endroits (voir illustration).

Quel serait l’effet d’exécuter Linux sur ce système avec une telle mémoire? C'est-à-dire quelle est la probabilité d'instabilité, d'erreur non détectée ou de performances médiocres? Y aura-t-il des pannes de système d'exploitation, des erreurs de segmentation, des échecs d'applications diverses ou autre? Existe-t-il un moyen de mapper ou de désactiver de gros morceaux de RAM?

memtest86 image

Notez que les 4 emplacements de mémoire sont étiquetés DDRII_1,2,3,4; 1 et 2 sont en jaune, 3 et 4 en orange. La photo Memtest86 ci-dessus a été prise lorsque les emplacements ont été remplis (nouveaux, anciens, anciens). Des erreurs se produisent également à des adresses similaires avec un ordre de remplissage (ancien, ancien, nouveau, nouveau), avec le même taux d'accès à la mémoire (environ 2,9 Go / s) qu'à l'image. Rempli (vieux, vieux, -, -) ou (vieux, -, vieux, -) ou (nouveau, - nouveau, -) aucune erreur ne s'est produite en quelques heures de test, mais (nouveau, nouveau, -, -) pour une raison quelconque, n’a pas pénétré dans ou à travers le BIOS et le bouton de réinitialisation ne semble pas avoir d’effet et il n’ya pas de signal vidéo. Avec 3 emplacements remplis, par exemple(new1, old, new0, -) une erreur est survenue (située dans le premier Go de RAM) en 1,5 heure de test; avec (old, old, new0, -), aucune erreur après 2 heures de test. Un problème de performance avec les configurations de 6 Go est un taux d’accès mémoire de seulement 1,7 Go / s.

Résumé de la question: Quel serait l’effet de l’exécution de Linux sur ce système avec de la mémoire sujette à des erreurs mono-bit? Existe-t-il un correctif autre que le remplacement de la RAM?

James Waldby - jwpat7
la source
1
Vous pouvez généralement résoudre ces erreurs en augmentant la tension de la RAM, en augmentant la latence et / ou en diminuant la fréquence du FSB.
David Schwartz
En ce qui concerne la latence, connaissez-vous une documentation sur lequel des numéros CAS 4-4-4-12 (comme sur l’image) devrait être modifié?
James Waldby - jwpat7
La spécification technique de ces puces spécifie une latence CAS de 5 au passage.
Dennis
Vous devez soit augmenter la tension à 2,0 V, soit augmenter la latence du CAS à 5. Au moins, si les spécifications que je vois en ligne sont correctes, c'est ce qu'ils disent. (Ils ne sont pas venus avec des spécifications?)
David Schwartz

Réponses:

9
  1. Le taux d'accès à la mémoire est plus faible avec seulement 3 puces car la mémoire à double canal doit toujours être installée par paires.

  2. Les erreurs sur un seul bit peuvent causer à peu près tout. Leur probabilité dépend de l'état de votre mémoire, mais ce n'est pas une bonne idée de prendre ces risques. L'instabilité du système est ce que vous devriez espérer. Vous pouvez également stocker un fichier critique du système (ou tout autre fichier important pour vous) dans cette partie de la mémoire, le modifier et écraser le fichier d'origine. Ainsi, une seule erreur de bit peut gâcher tout votre système d'exploitation.

  3. Il est fort probable qu'un seul des bâtons de mémoire soit défectueux (probablement nouveau1). La mémoire de PYG est accompagnée d'une garantie à vie. Vous pouvez donc essayer de l'utiliser. J'ai entendu de très mauvaises choses sur la mémoire et le service client de PYG, mais je ne peux pas le savoir avec certitude.

Dennis
la source
Je demanderai un remplaçant, mais je cherche des alternatives en cas de problèmes ou de retards de remplacement.
James Waldby - jwpat7
Vous devrez retourner le bâton défectueux pour le remplacer, utilisez donc 4 Gio pour le moment.
Dennis
5

Comme indiqué, une erreur de mémoire sur un seul bit peut provoquer presque tout ce qui ne va pas, ou vous pouvez ne jamais le remarquer du tout.

J'avais une mauvaise mémoire avant et le mauvais point dans la RAM signifiait parfois que Windows fonctionnerait, mais se corromprait assez régulièrement. Vous ne pouvez jamais prédire ce qui sera alloué dans un emplacement donné de RAM dans un système (en raison de la façon dont les systèmes d’exploitation allouent de la mémoire) et, même si vous avez de la chance et ne l’avez que pour interrompre un programme sans importance ou en corrompre un graphique, il Il y a de fortes chances que cela fasse pire et que vous risquiez vos données en utilisant un mauvais bâton de RAM.

Linux supporte BadMem, ce qui, si je me souviens bien, peut signifier que vous pouvez "tracer" le bloc de mémoire défectueux. Je ne pouvais pas savoir s'il prenait en charge le dernier noyau pour voir s'il pouvait vous être utile.

Mon conseil est le suivant: à court terme, préparez-vous à la perte de données et à l’instabilité générale du système. À long terme, vous devez identifier le stick défectueux et le remplacer.

Mokubai
la source
3

Pour pouvoir exécuter des programmes, un ordinateur récupère des instructions sur la procédure à suivre en mémoire. (les programmes sont chargés en mémoire). Les instructions ne sont que des séquences de nombres et constituent le langage informatique.

Construisons un langage simple où 1 = copie, 3 = de, 4 = à

1 (copie), 50,3 (de), 100,4 (à), 200;

Ainsi, la séquence de numéros 1,50,3,100,4,200 peut, pour l'ordinateur, copier 50 octets de données de la mémoire locaton 100 vers la mémoire 200. C'est la même chose que de déplacer 50 chaussettes d'un tiroir à un autre.

Maintenant, si la mémoire ne fonctionne pas correctement et qu’il ya une erreur sur un bit, un nombre peut par exemple passer de 1 à 129. Donc, en supposant que tout nombre dans la séquence ci-dessus puisse être modifié, vous risquez de vous retrouver avec de nombreuses erreurs intéressantes. Si 50 sont remplacés par 35 ou 188, il est assez facile de comprendre que la quantité de données à copier sera fausse et qu’elle pourrait éventuellement écraser d’autres données (qui pourraient être des instructions) en mémoire. si 1 devient 5, l'ordinateur peut même ne pas comprendre qu'il est censé copier quoi que ce soit. Ainsi, comme il a été démontré, une erreur sur un seul bit peut entraîner non seulement un seul défaut, mais peut-être aussi d’autres erreurs causées par la première erreur.

Linux (ou tout autre système d’exploitation) est fondamentalement identique au reste des programmes exécutés sur votre ordinateur: une séquence de chiffres qui indique à l’ordinateur ce qu’il doit faire. Si cette séquence est corrompue, les programmes ne feront pas que l’ordinateur fasse ce qu’il était prévu de faire et vous risquez donc de rencontrer toutes sortes de problèmes.

N'oubliez pas non plus que la musique, les vidéos ou les images ne sont qu'une séquence de chiffres et que le même principe s'applique ici. Il convient d'ajouter que, selon votre fichier, une corruption peut ne pas être perceptible (par exemple, un pixel défectueux dans une image), mais cela ne signifie pas que le fichier est correct. Le texte que vous lisez sur une page Web peut même contenir une faute de frappe si ce caractère est stocké dans un emplacement de mémoire incorrecte.

Il existe des puces RAM conçues pour récupérer les erreurs sur un seul bit et capables de détecter des erreurs sur deux bits (RAM ECC).

Espérons que cela explique pourquoi tout système d'exploitation ne fonctionnera pas si la mémoire contenant ses données et / ou ses instructions est corrompue. Votre solution la plus sûre consiste à remplacer le bélier cassé. En attendant, vous voudrez peut-être cartographier la zone de mémoire défectueuse à l'aide du paramètre de noyau memmap (le texte suivant est copié d'une réponse que j'ai obtenue pour une autre question).

 memmap=nn[KMG]$ss[KMG]
            [KNL,ACPI] Mark specific memory as reserved.
            Region of memory to be used, from ss to ss+nn.
            Example: Exclude memory from 0x18690000-0x1869ffff
                     memmap=64K$0x18690000
                     or
                     memmap=0x10000$0x18690000
Tête de cire
la source
2

J’avais le même problème, mais les réponses disponibles me semblaient confuses et incomplètes; j’ai donc élaboré un guide étape par étape, en supposant le moins de renseignements de base possible.

  1. Exécutez Memtest86 + dans la sortie «Badram» (de préférence à partir d’un support externe amorçable). Lorsque Memtest86 + démarre, tapez:
  2. “C” (“configuration”), puis
  3. “4” (“Mode de rapport d'erreur”), puis
  4. “3” (“Bad RAM Patterns”), puis
  5. "0" ("Continuer").
  6. Copiez la sortie qui suit les lignes commençant par «badram =».
  7. Ouvrez un terminal (ligne de commande).
  8. Allez dans le répertoire où se trouve le fichier “grub”. Par exemple, “cd / etc / default”.
  9. Avec les privilèges «root», utilisez un éditeur de texte pour ouvrir le fichier «grub» (si vous n'êtes pas connecté en tant que «root», utilisez «sudo». Il vous sera demandé le mot de passe «root».): «Sudo nano grub ”(Cet exemple modifie l'utilisateur en“ racine ”et ouvre le fichier“ grub ”avec l'éditeur de texte“ nano ”.).
  10. Trouvez la section décrivant le memtest.
  11. Décommentez la dernière ligne (supprimez le caractère spécial au début de la ligne, tel que “#”, “>” ou “!”). Cela le rend actif (par exemple, «# GRUB_BADRAM =» devient «GRUB_BADRAM =».).
  12. Remplacez les exemples d'adresses (après «GRUB_BADRAM =») par la sortie «badram =» que vous avez copiée à partir de Memtest86 + (par exemple, «0x98f548a0,0xfffffffc»).
  13. Enregistrez (ou "écrivez") vos modifications.
  14. Dans le terminal (ligne de commande), mettez à jour le fichier “grub.cfg” en tapant “sudo update-grub”.
  15. Redémarrez.
utilisateur392465
la source
On dirait une bonne réponse. Minuterie avec «(si vous n'êtes pas connecté en tant que« root », utilisez« sudo ». Le mot de passe« root »vous sera demandé.)» - sudo demande à l'utilisateur pw. D'après man sudoers«Contrairement à su (1), lorsque sudoers requiert une authentification, il valide les informations d'identification de l'utilisateur appelant et non celles de l'utilisateur cible (ou de la racine)», sauf indication contraire de sudoer flags
James Waldby - jwpat7 -
0

Les mémoires d'aujourd'hui (depuis au moins 10 ans à ce jour) devraient toutes comporter une correction d'erreurs intégrée. Si cela échoue régulièrement, quelque chose est très faux et peut échouer de façon catastrophique à tout moment.

Voir à remplacer la RAM défaillante dès que possible.

vonbrand
la source
J'ai jeté l'ordinateur référencé il y a des années. Si je l'avais toujours, il aurait un peu plus de 10 ans. :)
James Waldby - jwpat7