5.2. Huge Pages e Transparent Huge Pages
A memória é gerenciada em blocos conhecidos como pages. Uma página tem 4096 bites. 1MB de memória é igual a 256 páginas; 1 GB de memória é igual a 256,000 páginas, etc. As CPUs possuem uma unidade de gerenciamento de memória que contém uma lista destas páginas, com cada página referenciada através de uma entrada de tabela de página.
Existem duas formas de habilitar o sistema para gerenciar grandes quantias de memória:
- Aumente o número de entradas de tabela de páginana unidade de gerenciamento de memória de hardware
- Aumente o tamanho da página
O primeiro método é caro, já que a unidade de gerenciamento de memória hardware de um processador moderno suporta apenas centenas ou milhares de entradas de tabela de página. Além disso, o hardware e os algoritmos de gerenciamento de memória que funcionam bem com milhares de páginas (megabytes de memória) podem ter dificuldade para realizar bem com milhões (ou até bilhões) de páginas. Isso resulta em problemas de desempenho: quando um aplicativo precisa usar mais páginas de memória do que a unidade de gestão de memória suporta, o sistema retorna mais lento, gerenciamento de memória baseado em software, o que faz com que todo o sistema funcionar mais devagar.
Red Hat Enterprise Linux 6 implementa o segundo método via uso de huge pages.
Colocando de uma forma simples, huge pages são blocos de memória de 2MB e 1GB de tamanho. As tabelas de páginas usadas pelas páginas de 2MB são adequadas para gerenciar gigabytes múltiplos de memória, onde as tabelas de páginas com 1GB são melhores para escalar para terabytes de memória.
Huge pages devem ser atribuídas durante a inicialização. Elas também são difíceis de gerenciar manualmente, e geralmente requerem mudanças significativas no códigos para serem utilizados de forma efetiva. Como tal, o Red Hat Enterprise 6 também implementou o uso do transparent huge pages (THP). O THP é uma camada de abstração que automatiza a maioria dos aspectos de criação, gerenciamento e uso de huge pages.
THP esconde muito da complexidade do uso do huge pages de administradores e desenvolvedores do sistema. Como o objetivo de THP é melhorar o desempenho, seus desenvolvedores (tanto da comunidade e Red Hat) já testaram e otimizaram THP através de uma ampla gama de sistemas, configurações, aplicativos e cargas de trabalho. Isto permite que as configurações padrão de THP melhorem o desempenho da maioria das configurações do sistema.
Note que o THP pode mapear atualmente somente regiões de memória anônimas, assim como espaços de heap e pilha.