L'un des scénarios de défaillance de serveur les plus courants 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 au début de la mémoire, je me demandais si memtest86+
vérifie la partie de la mémoire qui memtest86+
est chargée.
La mémoire allouée est-elle memtest86+
si petite qu'elle importe peu ou est-il possible que memtest86+
la mémoire DRAM manque un défaut car elle ne peut pas tester les emplacements de mémoire dans lesquels elle réside?
Réponses:
De toute évidence, memtest86 + ne peut pas tester la région de la 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 échoue). Cependant, memtest86 + est capable de déplacer son propre code vers une adresse différente au moment de l'exécution, et en utilisant cette astuce, il est en mesure de tester toute la mémoire que le microprogramme (BIOS) l'autorise à utiliser, mais pas tout à la fois.
Cette relocalisation de code est décrite dans README.background à l'intérieur de l'archive de code source memtest86 + (le fichier est légèrement obsolète). en fait 0x10000 et l'adresse haute est 0x2000000 ou 0x300000 en fonction de la quantité de mémoire de la machine).
Mais même avec cette astuce de relocalisation, memtest86 + n'est pas en mesure de tester toute la mémoire pour les raisons suivantes:
Habituellement, le microprogramme (BIOS) réserve certaines régions de la RAM à son propre usage (par exemple, les tables ACPI). Bien que l’UC puisse accéder à ces régions de RAM, tout ce qui y est écrit peut entraîner un comportement imprévisible.
Une partie de la RAM est utilisée pour le mode de gestion système et n'est même pas accessible à partir de la CPU en dehors du code privilégié SMM.
La plage d’adresses de la RAM comprise entre 640K et 1M est inaccessible en raison des particularités de l’agencement de la mémoire du PC hérité (une partie de cette RAM peut être utilisée en tant qu’ombre pour la ROM du BIOS et pour le SMM, d’autres parties peuvent être totalement inaccessibles).
la source
Non, memtest ne peut pas tester sa propre mémoire. Cependant, il est si petit (quelques Ko seulement) que cela importe peu. EDIT: cette instruction est fausse car, comme indiqué dans la réponse sélectionnée, memtest peut se déplacer de manière dynamique pour tester toute la mémoire adressable par l'utilisateur.
-
En théorie, les processeurs modernes peuvent, au démarrage, configurer une partie de leur cache en tant que mémoire programmable. De très petits programmes (tels que memtest) peuvent être exécutés sans toucher à la mémoire DRAM.
Cependant, il s’agit d’une fonctionnalité spécifique au modèle (qui nécessite une prise en charge du BIOS) et je ne pense pas que memtest l’utilise.
la source
memtest
teste également le cache du processeur. Donc, simemtest
vous voulez charger dans ce cache, alors cette partie du cache ne pourrait pas être testée, ce qui est plus problématique, car elle est beaucoup plus petite que la mémoire?