Support Large-Page

La prise en charge de grandes pages permet aux applications serveur d’établir des régions de mémoire à grande page, ce qui est particulièrement utile sur Windows 64 bits. Chaque traduction de grandes pages utilise une mémoire tampon de traduction unique à l’intérieur du processeur. La taille de cette mémoire tampon est généralement supérieure de trois ordres de grandeur à la taille de la page native ; cela augmente l’efficacité de la mémoire tampon de traduction, ce qui peut augmenter les performances de la mémoire fréquemment consultée.

La procédure suivante décrit comment utiliser la prise en charge de grandes pages.

Pour utiliser la prise en charge de grandes pages

  1. Obtenez le privilège SeLockMemoryPrivilege en appelant la fonction AdjustTokenPrivileges . Pour plus d’informations, consultez Affectation de privilèges à un compte et Modification des privilèges dans un jeton.
  2. Récupérez la taille minimale de grande page en appelant la fonction GetLargePageMinimum .
  3. Incluez la valeur MEM_LARGE_PAGES lors de l’appel de la fonction VirtualAlloc . La taille et l’alignement doivent être un multiple du minimum de grandes pages.

Lorsque vous écrivez des applications qui utilisent de la mémoire de grande page, gardez à l’esprit les considérations suivantes :

  • Les régions de mémoire de grande page peuvent être difficiles à obtenir après l’exécution du système depuis longtemps, car l’espace physique de chaque grande page doit être contigu, mais la mémoire peut être fragmentée. L’allocation de pages volumineuses dans ces conditions peut affecter considérablement les performances du système. Par conséquent, les applications doivent éviter d’effectuer des allocations répétées de grandes pages et à la place allouer toutes les grandes pages une fois, au démarrage.
  • La mémoire est toujours en lecture/écriture et non pagéable (toujours résidente dans la mémoire physique).
  • La mémoire fait partie des octets privés du processus, mais pas du jeu de travail, car le jeu de travail par définition contient uniquement de la mémoire paginable.
  • Les allocations de grandes pages ne sont pas soumises à des limites de travail.
  • La mémoire de grande page doit être réservée et validée en une seule opération. En d’autres termes, les pages volumineuses ne peuvent pas être utilisées pour valider une plage de mémoire précédemment réservée.
  • WOW64 sur les systèmes Intel Itanium ne prend pas en charge les applications 32 bits qui utilisent cette fonctionnalité. Les applications doivent être recompilées en tant qu’applications 64 bits natives.