70 votes

Comment interpréter les statistiques d'une exécution de memtest ?

J'ai ici un ordinateur portable que je soupçonne d'avoir un module de mémoire défectueux. J'ai donc téléchargé Memtest86+ et laissez-le fonctionner.

Notez que la capture d'écran n'est pas la mienne, elle a été fournie par memtest86+.

memtest

Comment interpréter les chiffres à l'écran ? Je l'ai laissé tourner pendant environ quatre heures et je suis maintenant dans la passe 7.

En particulier, que fait

  • le numéro du test
  • le nombre d'erreurs
  • le nombre d'erreurs ECC

indiquer ? Quelles sont les valeurs raisonnables pour les erreurs de mémoire ? À quel moment dois-je envisager de remplacer la mémoire ?

3 votes

Vous voulez continuer à utiliser la mémoire sans erreur ?

1 votes

Pas si le nombre d'erreurs se situe dans une fourchette acceptable (si tant est qu'il y en ait). Ce n'est pas non plus mon et ce n'est pas une décision que je dois prendre. J'ai voulu poser cette question comme une simple référence à "Qu'est-ce que cela signifie pour moi ?", sans me baser particulièrement sur ma machine (elle a probablement trop d'erreurs de toute façon).

4 votes

Ce n'est qu'un conseil :) . N'ignorez pas les erreurs dans memtest. Une seule petite erreur dans la RAM peut casser un système d'exploitation complet et causer une perte de données.

92voto

Pylsa Points 29904

TL;DR

Commencez par le numéro le plus important : Le nombre d'erreurs pour une mémoire saine devrait être de 0 . Tout chiffre supérieur à 0 peut indiquer des secteurs endommagés ou défectueux.


Explication de l'écran

     Memtest86+ v1.00      | Progress of the entire pass (test series)
CPU MODEL and clock speed  | Progress of individual, current test
Level 1 cache size & speed | Test type that is currently running
Level 2 cache size & speed | Part of the RAM (sector) that is being tested
RAM size and testing speed | Pattern that is being written to the sector
Information about the chipset that your mainboard uses
Information about your RAM set-up, clock speed, channel settings, etc.

WallTime   Cached  RsvdMem   MemMap   Cache  ECC  Test  Pass  Errors  ECC Errs
---------  ------  -------  --------  -----  ---  ----  ----  ------  --------
Elapsed    Amount  Amount    Mapping  on     on   Test  # of  # of    # of ECC
time       of RAM  of        used     or     or   type  pass  errors  errors
           cached  reserved           off    off        done  found   found
                   RAM, not
                   tested

Explication des données/essais

MemTest effectue un certain nombre de tests, il écrit des motifs spécifiques dans chaque secteur de la mémoire et les récupère. Si les données récupérées diffèrent de celles qui étaient stockées à l'origine, MemTest enregistre une erreur et augmente le temps de réponse de la mémoire. nombre d'erreurs par un. Les erreurs sont généralement le signe de bandes de RAM défectueuses.

Comme la mémoire n'est pas seulement un bloc-notes qui contient des informations mais qu'elle a des fonctions avancées comme la mise en cache, plusieurs tests différents sont effectués. Voici ce que le Test # indique. MemTest exécute un certain nombre de tests différents pour voir si des erreurs se produisent.

Quelques exemples de tests (simplifiés) :

  • Testez les secteurs dans cet ordre : A, B, C, D, E, F. (Série)
  • Les secteurs de test dans cet ordre : A, C, E, B, D, F. (Déplacement)
  • Remplir tous les secteurs avec le motif : aaaaaaaa
  • Remplissez tous les secteurs avec un motif aléatoire.

Description plus détaillée de tous les tests à partir de : https://www.memtest86.com/technical.htm#detailed

Test 0 [Test d'adresse, marche des uns, pas de cache].

Teste tous les bits d'adresse de toutes les banques de mémoire en utilisant un "walking ones". d'adresse.

Test 1 [Test d'adresse, adresse personnelle, séquentiel].

Chaque adresse est écrite avec sa propre adresse et ensuite est vérifiée pour la cohérence. En théorie, les tests précédents auraient dû détecter tout problèmes d'adressage de la mémoire. Ce test devrait détecter toute erreur d'adressage d'adressage qui, d'une manière ou d'une autre, n'ont pas été détectées précédemment. Ce test est effectué séquentiellement avec chaque CPU disponible.

Test 2 [Test d'adresse, adresse personnelle, parallèle].

Identique au test 1 mais le test est effectué en parallèle en utilisant tous les CPUs et en utilisant des adresses qui se chevauchent.

Test 3 [Inversions mobiles, ones&zeros, Séquentiel]

Ce test utilise l'algorithme des inversions mobiles avec des modèles de tous les uns et les zéros. Le cache est activé même s'il interfère dans une certaine mesure avec les algorithmes de test. l'algorithme de test. Avec le cache activé, ce test ne prend pas ce test ne prend pas beaucoup de temps et devrait rapidement trouver toutes les erreurs erreurs plus subtiles. Ce test n'est qu'une vérification rapide. Ce test est effectué séquentiellement avec chaque CPU disponible.

Test 4 [Inversions mobiles, ones&zeros, Parallèle].

Identique au test 3 mais les tests sont effectués en parallèle en utilisant tous les CPUs.

Test 5 [Inversions mobiles, 8 bit pat].

Il s'agit du même test que le test 4 mais il utilise un motif de 8 bits de largeur de de uns et de zéros "ambulants". Ce test permet de mieux détecter les erreurs subtiles dans les puces mémoire "larges".

Test 6 [Inversions mobiles, motif aléatoire].

Le test 6 utilise le même algorithme que le test 4 mais le modèle de données est un un nombre aléatoire et son complément. Ce test est particulièrement efficace pour trouver les erreurs de sensibilité des données difficiles à détecter. La séquence de nombres La séquence de nombres aléatoires est différente à chaque passage. augmentent l'efficacité.

Test 7 [Mouvement de bloc, 64 mouvements]

Ce test sollicite la mémoire en utilisant les instructions de déplacement de bloc (movsl). et est basé sur le test burnBX de Robert Redelmeier. La mémoire est initialisée avec des motifs de décalage qui sont inversés tous les 8 octets. Ensuite, des blocs de mémoire de 4mb de blocs de mémoire sont déplacés à l'aide de l'instruction movsl. Après les déplacements sont terminés, les modèles de données sont vérifiés. Comme les données ne sont vérifiées qu'une fois les déplacements de mémoire terminés, il n'est pas possible de savoir où l'erreur s'est produite. Les adresses signalées sont seulement pour l'endroit où le mauvais modèle a été trouvé. Comme les déplacements sont sont limités à un segment de mémoire de 8mb, l'adresse défaillante sera toujours sera toujours à moins de 8mb de l'adresse rapportée. Les erreurs de ce test ne sont pas utilisées pour calculer les modèles BadRAM.

Test 8 [Inversions mobiles, Pat 32 bits].

Il s'agit d'une variation de l'algorithme des inversions mobiles qui déplace le motif de données d'un bit vers la gauche pour chaque adresse successive. La position du bit de départ de position du bit de départ est décalée vers la gauche à chaque passage. Pour utiliser tous les modèles de données possibles, 32 passages sont nécessaires. Ce test est assez efficace pour détecter les erreurs de sensibilité des données mais le temps d'exécution est long.

Test 9 [Séquence de nombres aléatoires]

Ce test écrit une série de nombres aléatoires en mémoire. En réinitialisant la graine pour le nombre aléatoire, la même séquence de nombre peut être créée pour une référence. Le modèle initial est vérifié et puis complété et vérifié à nouveau lors du passage suivant. Cependant, contrairement des inversions mobiles, l'écriture et la vérification du test ne peuvent se faire que dans le dans le sens de la marche.

Test 10 [Modulo 20, ones&zeros]

L'utilisation de l'algorithme Modulo-X devrait permettre de découvrir des erreurs qui ne sont pas détectées par les inversions de mouvement en raison des interférences du cache et de la mémoire tampon avec l'algorithme. Comme pour le test 1, seuls les uns et les zéros sont utilisés pour les modèles de données.

Test 11 [Test d'altération des bits, 90 min, 2 motifs].

Le test d'évanouissement des bits initialise toute la mémoire avec un motif et puis dort pendant 5 minutes. Ensuite, la mémoire est examinée pour voir si des bits de mémoire ont changé. Des modèles de type "tous les uns" et "tous les zéros" sont utilisés.

Comme les secteurs défectueux peuvent parfois fonctionner et ne pas fonctionner une autre fois, je recommande de laisser MemTest effectuer plusieurs passages. Un test complet passer est une série de tests terminés et réussis. (Les séries de tests 1 à 11 ci-dessus). Plus vous obtenez de réussites sans erreurs, plus votre exécution du MemTest est précise. J'ai l'habitude de faire environ 5 passes pour être sûr.

Le nombre d'erreurs pour une mémoire saine doit être de 0. Tout nombre supérieur à 0 peut indiquer des secteurs endommagés/difficiles.

Nombre d'erreurs ECC ne doit être prise en compte que lorsque ECC est réglé sur off . ECC est l'abréviation de Error-correcting code memory (code de correction d'erreur). Il s'agit d'un mécanisme permettant de détecter et de corriger les bits erronés dans un état de la mémoire. Il peut être légèrement comparé aux contrôles de parité effectués sur les supports RAID ou optiques. Cette technologie est assez coûteuse et ne sera probablement rencontrée que dans les configurations de serveurs. Le compteur ECC compte le nombre d'erreurs qui ont été corrigées par le mécanisme ECC de la mémoire. L'ECC ne devrait pas avoir à être invoqué pour une RAM saine, donc un nombre d'erreurs ECC supérieur à 0 peut également indiquer une mauvaise mémoire.


Explication de l'erreur

Exemple de Memtest qui a rencontré des erreurs. Il montre quel secteur/adresse a échoué.

Memtest screen with errors

La première colonne ( Tst ) indique quel test a échoué, le numéro correspond au numéro du test dans la liste déjà mentionnée ci-dessus. La deuxième colonne ( Passez ) montre si ce test a passé. Dans le cas de l'exemple, le test 7 n'a pas été réussi.

La troisième colonne ( Adresse défaillante ) montre exactement quelle partie de la mémoire présente des erreurs. Une telle partie a une adresse, un peu comme une adresse IP, qui est unique pour cette partie du stockage de données. Il indique l'adresse qui a échoué et la taille du morceau de données (0,8 Mo dans l'exemple).

Le quatrième ( Bon ) et cinquième ( Mauvais ) indiquent respectivement les données qui ont été écrites et celles qui ont été récupérées. Les deux colonnes doivent être égales dans une mémoire non défectueuse (évidemment).

La sixième colonne ( Err-Bits ) montre la position des bits exacts qui sont défaillants.

La septième colonne ( Comte ) indique le nombre d'erreurs consécutives avec la même adresse et les mêmes bits défaillants.

Enfin, la dernière, la septième colonne ( Chan ) indique le canal (si plusieurs canaux sont utilisés sur le système) dans lequel se trouve la barrette mémoire.


S'il trouve des erreurs

Si MemTest découvre des erreurs, la meilleure méthode pour déterminer quelle module est défectueux est couverte dans cette question de super utilisateur et sa réponse acceptée :

Utilisez le processus d'élimination -- retirez la moitié des modules et exécutez le test à nouveau...

S'il n'y a pas d'échec, alors vous savez que ces deux modules sont bons, alors mettez-les de côté et testez-les à nouveau.

S'il y a des échecs, alors réduisez à nouveau de moitié (jusqu'à un des éléments suivants quatre modules de mémoire maintenant) et testez à nouveau.

Mais, juste parce que l'un a échoué à un test, ne supposez pas que l'autre que l'autre ne l'est pas (vous pourriez avoir deux modules de mémoire défaillants). vous avez détecté une défaillance avec deux modules de mémoire, testez chacun de ces deux chacun de ces deux modules séparément.

Remarque importante : avec des fonctions telles que l'entrelacement de la mémoire et la mauvaise et les mauvais schémas de numérotation des supports de module de mémoire de certains il peut être difficile de savoir quel module est représenté par une adresse donnée. donnée.

0 votes

Merci pour l'explication ! Pourriez-vous répondre à la question de savoir comment trouver le module RAM exact correspondant à une erreur ? J'ai l'adresse d'erreur égale à 000c34e98dc - 3124.9MB . Pourquoi un si gros morceau ? J'ai des modules 2x1Gb et 2x2Gb dans mon PC. Comment trouver celui qui cause des défaillances ?

0 votes

@Mikhail Je voudrais vous renvoyer à cette question et à sa réponse acceptée : superuser.com/questions/253875/

0 votes

0 erreur ne signifie pas que la RAM est défectueuse, j'ai eu des cas où une carte RAM a passé le memtest avec un score de 100% et c'est seulement en la remplaçant que j'ai pu résoudre un problème épineux.

7voto

Eli Points 850

Numéro de test : le numéro du test spécifique que memtest est en train d'exécuter. Il y en a beaucoup.

Nombre d'erreurs : Le nombre d'erreurs de mémoire rencontrées

Erreurs ECC : Nombre d'erreurs corrigées par ECC. Votre chipset/mémoire n'a pas d'ECC, donc ce nombre n'a pas d'importance.

Si votre mémoire présente un nombre d'erreurs supérieur à 0, vous devrez la remplacer.

EDIT : Les tests sont les différents modèles que memtest écrit en mémoire. Il écrit différents modèles dans la mémoire et les relit pour vérifier les erreurs, et il utilise différents modèles pour être capable de tester tous les états de tous les bits.

Le compte indique le nombre de fois que le résultat lu par memtest ne correspond pas à ce qu'il a écrit en mémoire, signifiant qu'il y a une erreur dans le morceau de mémoire testé.

L'ECC est une technologie de correction des erreurs intégrée aux puces mémoire des serveurs et des stations de travail. La plupart des ordinateurs de bureau ne prennent pas en charge les modules de mémoire avec ECC intégré. Presque tous les serveurs/stations de travail le prennent en charge et l'exigent généralement. Le nombre d'erreurs corrigées par ECC est le nombre d'erreurs que la puce ECC a réussi à corriger.

6voto

n-alexander Points 2685

Nombre d'erreurs

Lors de l'exécution des tests, si la mémoire échoue à l'un d'entre eux, le nombre d'erreurs est incrémenté. Si je me souviens bien, il compte le nombre d'adresses qui ont échoué le test.

Nombre d'erreurs ECC

Mémoire ECC est un type particulier de puce mémoire qui est utilisé pour empêcher les données d'être corrompues. Votre ECC Errs La colonne compte combien de problèmes ont été résolus par ECC.

(L'ECC est lent et coûteux et est essentiellement destiné aux systèmes critiques qui ne peuvent pas être dérangés pour remplacer la RAM).

Numéro d'essai

Memtest effectue différents types de tests sur votre mémoire, qui sont décrits sur le site Web de l'entreprise. Memtest86 site web. Il s'agit d'une traduction rapide en anglais :

Test 0 : Test de l'adresse des personnes qui marchent

Memtest va écrire 00000001 dans le premier emplacement mémoire, 00000010 dans le suivant, et ainsi de suite, en répétant ce schéma tous les 8 octets. Ensuite, il lit la mémoire et s'assure que la valeur n'a pas changé. ( Source : )

Tests 1&2 : Test de l'adresse propre

Memtest écrit chaque emplacement mémoire avec sa propre adresse, et vérifie que la valeur n'a pas changé.

Le test 1 est séquentiel, et le test 2 est parallèle (c'est-à-dire qu'il utilise la concurrence).

Test 3&4 Test des inversions de mouvement

En fait, ce test charge des 0 en mémoire, et ensuite

  1. prend chaque emplacement de la mémoire (en commençant par le premier/le plus bas),
  2. et écrit l'inverse du motif (je crois que c'est un NOT bit à bit, mais je n'ai pas trouvé de documentation à ce sujet).

Le but ici est d'essayer de tester chaque bit et ses bits adjacents "toutes les combinaisons possibles de 0 et de 1".

Le test 3 n'utilise pas la concurrence, alors que le test 4 le fait.

Test 5 : Inversions mobiles, Pat 8 bits

On applique à nouveau la méthode des inversions mobiles, mais cette fois-ci avec les 1 de l'essai 0 dans des blocs de 8 bits.

Test 6 : Inversions mobiles, motif aléatoire

Memtest utilise des nombres aléatoires au lieu de tous les 0 ou de tous les 1.

Test 7 : Déplacement en bloc

Celui-là est amusant. Il charge des motifs en mémoire, les déplace par blocs de 4mb, et les vérifie.

Test 8 : Inversion de mouvement, Pat 32 bits

Identique au test 5, mais utilise des blocs de 32 bits à la place. Celui-ci charge en fait toutes les valeurs 32 bits possibles à chaque emplacement.

Test 9 : Nombres aléatoires

Celui-ci charge des nombres pseudo-aléatoires en mémoire et les vérifie. Ce qui est bien avec le générateur de nombres pseudo-aléatoires, c'est qu'il n'est pas très aléatoire (si vous avez déjà exécuté le programme printf("%d", rand()); dans un programme C sans semer et obtenir les 41 oh-so-random, vous voyez ce que je veux dire). Il vérifie donc en réinitialisant le semeur de nombres aléatoires et en relançant le générateur.

Test 10 : Modulo-X

Tous les 20 emplacements, il écrit un motif (tous les 0 ou tous les 1) et écrit le complément dans tous les autres emplacements, puis vérifie.

Test 11 : Test d'affaiblissement des bits

Celui-ci charge la RAM avec tous les 1 (et à nouveau avec tous les 0), attend 5 minutes, et voit si l'une des valeurs change.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X