Citation :
Athlon: un bogue allergique à Linux
Le processeur phare d'AMD bogue sur la version 2.4 du pingouin.
L'apanage du bug n'appartient pas qu'à Intel -on se souvient avec émotion des premiers Pentium qui avaient appris à compter un peu de travers. Cette fois-ci, le grand méchant bogue s'attaque au processeur Athlon d'AMD quand il exécute la version 2.4 de Linux.
Mise en cause, la taille des pages sur laquelle opère la mémoire virtuelle des processeurs x86. Historiquement, la MMU reconnaissait uniquement des pages de 4 kilo-octets, compromis jugé optimal par les architectes [une page de taille trop petite rallonge la recherche dans les TLB, une page de taille trop grande est beaucoup plus longue à échanger lors d'une faute]. Mais, depuis l'introduction du Pentium, une autre taille est disponible: 4 méga-octets. Et celle-ci a été choisie par défaut pour certaines versions de Windows et par le noyau Linux 2.4.
Or, il semble bien que l'utilisation de cette taille de page, concomitante avec celle du bus AGP (utilisé par la majorité des cartes graphiques actuelles) se solde par un pataquès. Le processeur écrit des données au mauvais endroit, et, généralement, le système se plante sans autre forme de procès. Voilà qui fait mauvais effet.
La détection sera automatique dans la prochaine version
Pour les gens qui compilent leurs propres noyaux, la clé se trouve dans la variable X86_FEATURE_PSE du fichier /include/asm-i386/cpufeature.h. Les autres utilisateurs peuvent tenter de 'booter' Linux en entrant un drapeau "mem=nopentium" sous LILO. La prochaine version du noyau pourrait intégrer une détection automatique de cette configuration (malheureusement relativement courante) qui contraindrait Linux à n'utiliser que des pages de 4K, au dépens de la performance.
Apparemment, le bogue était connu des ingénieurs d'AMD dès septembre 2000. Mais ceux-ci n'ont publié qu'un patch pour Windows 2000. Linux a été oublié. Alors, perte de mémoire malencontreux ou volontaire? Etant donné le soutien qu'apporte publiquement AMD à Linux, tout incline à pencher pour la première hypothèse, même si le doute reste permis.
|