Large Memory Support: Large-Page Support
Vamos terminar esta série de posts relacionados com Large Memory Support, abordando a última das funcionalidades referidas:
4-Gigabyte Tuning
- Physical Address Extension
- Address Windowing Extensions
- Large-Page Support
Não vamos abordar esta funcionalidade em grande detalhe, uma vez que temos focado toda esta série de posts na vertente de administração e o Large-Page Support está mais vocacionado para o desenvolvimento das próprias aplicações.
O Large-page support vai permitir às aplicações aceder a grandes regiões de memória; neste caso em particular estamos a falar de aplicações server side e é particularmente útil em sistemas baseados na arquitectura 64 bits.
O sistema de large-page translation usa um buffer interno no próprio CPU em que a magnitude é 3 vezes maior que um buffer nativo de paging. Desta forma aumenta a eficiência das transacções do buffer o que aumenta a performance da memória que é acedida com mais frequência.
Como usar o large-page support.
- Obter o privilégio SeLockMemoryPrivilege chamando a função AdjustTokenPrivileges. Ver mais detalhes em Changing Privileges in a Token.
- Obter o tamanho mínimo para o large-page usando a função GetLargePageMinimum
- Incluir o valor MEM_LARGE_PAGES ao chamar a função VirtualAlloc.
Ao criar aplicações que usem o large-page deve-se ter em atenção as seguintes considerações:
- As regiões de memória Large-page poderão ser difíceis de obter depois de o sistema estar em execução por muito tempo, dado que o espaço de memória física para cada região deve ser contíguo, e a memória pode já estar muito fragmentada. Alocar Large-page nestas condições pode afectar significativamente a performance do sistema. Dessa forma, as aplicações devem efectuar estas alocações apenas uma vez – aquando do arranque do sistema.
- O tipo de memória usado deverá ser read-write e não paginável – sempre residente na memória física.
- A memória deverá fazer parte dos private bytes do processo mas não parte do wroking set, dado que por definição o Working Set contém apenas memória paginavel.
- WOW64 em sistemas Intel Itanium não suportam a execução de aplicações 32 bits que usem esta funcionalidade, dessa forma a aplicação deverá ser compilada directamente em 64 bits.
AL