Primeiramente vamos analisar os motivos da implementação de Large Page nos sistemas operacionais? Isso mesmo, large page não é um recursso exclusivo do Windows haja vista que algumas versões do Windows suportam large pages onde temos o hardware compativel.

Não vamos nos aprofundar no mecanismo de alocação será realizado uma pequena descrição do mecanismo.

Na livre tradução Large Parge seria algo como “paginas grandes” ou algo maior que a menor pagina utilizada pela arquitetura.  Por padrão, na maioria dos sistemas operacionais uma pagina é definida como 4096 bytes = 4Kb.

O SO realiza a abstração no acesso da memoria usando o conceito de memoria virtual onde temos a PTE(Page Table Entry) que é uma tabela resposánvel pelo mapeamento da memoria virtual e sua relação com a memória RAM e memória SWAP. Temos também a TLB(translation lookaside buffer) que é uma “tabela especial”  onde é gerenciado pelo MMU(Unidade de gerenciamento de Memoria) da CPU. Podemos ver no grafico abaixo uma representação desse conceito :

Quando uma aplicação faz acesso a memoria em solicitação de leitura e escrita a mesma segue o fluxo como o abaixo:


Podemos ver no grafico acima o fluxo nas requisições de memoria onde temos os acesso a todos os tipos de cache(cache L3, RAM e Disco).  Isso é proprio da arquitetura.

Então já podemos imaginar os beneficio do Larges pagespode trazer para aplicações de banco de dados onde temos a utilização e modificação  de grandes quantidade de memoria. Atraves de uma exemplo simples podemos observar os beneficios do large pages:

- Se uma aplicação requisita 5 MB na arquitetura com o tamanho padrão de pagina 4Kb então teremos 1280 pages armazenadas em cache na TLB e uma sobrecarga de 5Kb para manter na pages table. A aplicação faz alocação e desalocação de memoria varias vezes em pequenos espaços de tempo. Então teremos ciclos de preenchimentos e de desalocação de paginas no cache da TLB causando uma desordenação(fragmentação). Essa é a principal penalidade de desempenho e o principal motivo para utilizarmos “large pages”.

Ao utilizarmos larges pages com paginas de 2MB de tamanho temos uma redução consideravel das entradas no cache da TLB. Ex. Quando a aplicação requisita 5MB de memória temos  3 paginas na TLB. Uma das desvantagens do large pages e a fragmentação interna devido a sobras de blocos de paginas fazias. Que nesse caso seria a entrada de cache na TLB do mapeamento de 1Mb não utilizados.