Freigeben über


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.

  1. Obter o privilégio SeLockMemoryPrivilege chamando a função AdjustTokenPrivileges. Ver mais detalhes em Changing Privileges in a Token.
  2. Obter o tamanho mínimo para o large-page usando a função GetLargePageMinimum
  3. 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