Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.2. « Huge Pages » et « Transparent Huge Pages »

La mémoire est gérée en blocs appelés des pages. Une page fait 4096 octets. 1 Mo de mémoire est équivalent à 256 pages, 1 Go de mémoire équivaut à 256 000 pages, etc. Les CPU possèdent une unité de gestion de mémoire intégrée qui contient une liste de ces pages, avec chaque page référencée via une entrée de table de pages.
Il existe deux manières d'activer le système afin qu'il gère de grandes quantités de mémoire :
  • Augmenter le nombre d'entrées de tables de pages dans l'unité de gestion de mémoire du matériel
  • Augmenter la taille de page
La première méthode est coûteuse puisque l'unité de gestion de mémoire du matériel dans un processeur moderne prend uniquement en charge des centaines ou des milliers d'entrées de tables de pages. En outre, les algorithmes de gestion de mémoire et de matériel qui fonctionnent bien avec des milliers de pages (mégaoctets de mémoire) peuvent avoir des difficultés avec des millions (ou même des milliards) de pages. Il en résulte des problèmes de performance : lorsqu'une application doit utiliser plus de pages de mémoire que ce que l'unité de gestion de mémoire prend en charge, alors le système bascule sur une gestion de mémoire plus lente et basée sur logiciel, ce qui cause au système entier de fonctionner plus lentement.
Red Hat Enterprise Linux 6 implémente la seconde méthode via l'utilisation des huge pages.
Les huges pages sont des blocs de mémoire d'une taille de 2 Mo et de 1 Go. La table des pages utilisée par les pages de 2 Mo sont convenables pour gérer de multiples gigaoctets de mémoire, alors que les tables de pages des pages faisant 1 Go sont mieux pour étendre sur des téraoctets de mémoire.
Les huges pages doivent être assignées au moment du démarrage. Elles sont aussi difficiles à gérer manuellement et requièrent souvent des modifications significatives du code afin d'être utilisées de manière efficace. Ainsi, Red Hat Enterprise Linux 6 a aussi implémenté l'utilisation de THP (transparent huge pages). THP est une couche d'abstraction qui automatise les plupart des aspects de la création, de la gestion et de l'utilisation de huges pages
Les THP cachent une grande partie de la complexité de l'utilisation des huges pages aux administrateurs et développeurs. Comme le but de THP est d'améliorer les performances, ses développeurs (de la communauté et de Red Hat) ont testé et optimisé les THP sur un large éventail de systèmes, de configurations, d'applications et de charges de travail. Ceci permet aux paramètres par défaut des THP d'améliorer les performances de la plupart des configurations de système.
Remarquez qu'actuellement, THP peut uniquement mapper des régions de mémoire anonymes, telles que les espaces du tas et de la pile.