65 votes

Est-ce que memtest86+ teste la mémoire qui est utilisée pour s'exécuter ?

L'un des scénarios courants de défaillance des serveurs est une DRAM défectueuse, parfois même lorsque la mémoire ECC est utilisée.

memtest86+ est l'un des outils les plus utiles pour diagnostiquer les problèmes de DRAM. Comme il se charge lui-même au début de la mémoire, je me suis demandé si memtest86+ vérifie la partie de la mémoire qui memtest86+ est chargé.

Est-ce que la mémoire allouée à memtest86+ si petit que ça n'a pas d'importance, ou est-il possible que memtest86+ pourrait manquer un défaut dans la DRAM parce qu'elle ne peut pas tester les emplacements mémoire dans lesquels elle réside ?

76voto

Sergey Vlasov Points 6068

Évidemment, memtest86+ ne peut pas tester la région de mémoire qui contient actuellement le code exécutable de memtest86+ (mais s'il y a des erreurs de mémoire dans cette région, il est très probable que le test lui-même se plante). Cependant, memtest86+ est capable de relocaliser son propre code à une adresse différente au moment de l'exécution, et en utilisant cette astuce il est capable de tester toute la mémoire qu'il est autorisé à utiliser par le firmware (BIOS) - mais pas tout en même temps.

Cette relocalisation du code est décrite dans README.background à l'intérieur de l'archive du code source de memtest86+ (le fichier est légèrement dépassé - par exemple, il indique que les adresses utilisées pour le code de memtest86+ sont 0x2000 et 0x200000, mais l'adresse basse telle que définie dans le source est en fait 0x10000, et l'adresse haute est soit 0x2000000 soit 0x300000 selon la quantité de mémoire dans la machine).

Mais même avec cette astuce de relocalisation, memtest86+ n'est pas capable de tester toute la mémoire pour les raisons suivantes :

  • Habituellement, le microprogramme (BIOS) réserve certaines régions de RAM pour son propre usage (par exemple, les tables ACPI). Bien que le CPU puisse accéder à ces régions de RAM, y écrire quoi que ce soit peut entraîner un comportement imprévisible.

  • Une partie de la RAM est utilisée pour le Mode de gestion du système et n'est même pas accessible depuis le CPU en dehors du code SMM privilégié.

  • La plage d'adresses de la RAM entre 640K et 1M est inaccessible en raison des bizarreries de l'agencement de la mémoire des anciens PC (une partie de cette RAM peut être utilisée comme ombre pour la ROM du BIOS et pour le SMM, d'autres parties peuvent être complètement inaccessibles).

5voto

shodanshok Points 42743

Non, memtest ne peut pas tester sa propre mémoire. Cependant, elle est si petite (seulement quelques Ko) que cela n'a pas d'importance. EDIT : cette affirmation est fausse puisque, comme indiqué dans la réponse choisie, memtest peut se relocaliser dynamiquement pour tester todos mémoire adressable par l'utilisateur.

--

En théorie, les processeurs modernes peuvent, au moment du démarrage, configurer une partie de leur cache comme une mémoire programmable, à partir de laquelle de très petits programmes (comme memtest) peuvent être exécutés. sans de toucher à la DRAM.

Cependant, c'est une fonction spécifique à un modèle (qui nécessite un support BIOS) et je ne pense pas que memtest l'utilise.

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