31
3.1 Choix de l’architecture matérielle
IMAGE_FILE_LARGE_ADDRESS_AWARE dans leur en-tête, ce qui est bien sûr le cas de SQL
Server), et de dédier 1 Go à la mémoire du noyau. C’est l’option que nous vous
recommandons sur une machine dédiée, si vous avez jusqu’à 16 Go de mémoire physique. Au-delà, cette option est à éviter. En effet, dans ce cas Windows a besoin de
mémoire supplémentaire pour des tables de page (page table entries, ou PTE) destinées à adresser cette mémoire. Si vous laissez l’option /3GB sur une machine qui possède plus de 16 Go de RAM installés, la mémoire supplémentaire sera simplement
ignorée, ce qui n’est sans doute pas le but recherché.
Vous pouvez savoir si /3GB est activé depuis SQL Server, en interrogeant la vue
sys.dm_os_sys_info, colonne virtual_memory_in_bytes :
SELECT
CASE
WHEN virtual_memory_in_bytes / 1024 / (2048*1024) < 1
THEN 'Pas activé'
ELSE '/3GB'
END
FROM sys.dm_os_sys_info;
Bien, mais que faire de la mémoire au-delà de l’espace d’adressage virtuel des
4 Go ? Depuis le Pentium Pro, tous les processeurs Intel 32 bits (famille x86)
incluent un mode de mapping de mémoire appelé PAE (Physical Address Extension),
qui permet d’accéder à 64 Go. En mode PAE, l’unité de gestion mémoire (MMU,
Memory Management Unit, un circuit intégré responsable de l’accès à la mémoire et
des fonctionnalités de pagination) se voit ajouter des lignes d’adressage supplémentaires qui lui permettent de gérer des adresses sur 36 bits. 2^36 / 1 024 / 1 024
= 65 536 Mo = 64 Go.
Pour activer ce mode PAE sur Windows (à partir de Windows 2000), vous devez
ajouter l’option /PAE dans le même fichier boot.ini :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /
fastdetect /PAE
Cette option active le chargement d’une image particulière du noyau de Windows (Ntkrnlpa.exe, ou Ntkrpamp.exe sur une machine multiprocesseurs, au lieu de
Ntoskrnl.exe).
Ceci permet donc au système d’exploitation d’augmenter sa limite adressable à
64 Go, mais les applications restent limitées par leur propre capacité d’adressage
32 bits. Windows leur montre des espaces de mémoire virtuelle sur 4 Go, différents
les uns des autres, qu’elles ne peuvent dépasser. L’utilisation de PAE seule est donc
intéressante lorsque plusieurs processus demandent de la mémoire, mais dans notre
cas, nous voulons faire profiter le seul processus sqlservr.exe de toute notre
mémoire. Nous devons alors utiliser AWE.
AWE (Address Windowing Extensions) est un API Windows qui permet aux applications qui l’implémentent d’accéder à plus de mémoire physique que leur espace
d’adressage virtuel 32 bits. Comme son nom l’indique, AWE effectue un fenêtrage
en régions d’espaces d’adressage, et réserve un plus grand nombre de régions de
3.1 Choix de l’architecture matérielle
IMAGE_FILE_LARGE_ADDRESS_AWARE dans leur en-tête, ce qui est bien sûr le cas de SQL
Server), et de dédier 1 Go à la mémoire du noyau. C’est l’option que nous vous
recommandons sur une machine dédiée, si vous avez jusqu’à 16 Go de mémoire physique. Au-delà, cette option est à éviter. En effet, dans ce cas Windows a besoin de
mémoire supplémentaire pour des tables de page (page table entries, ou PTE) destinées à adresser cette mémoire. Si vous laissez l’option /3GB sur une machine qui possède plus de 16 Go de RAM installés, la mémoire supplémentaire sera simplement
ignorée, ce qui n’est sans doute pas le but recherché.
Vous pouvez savoir si /3GB est activé depuis SQL Server, en interrogeant la vue
sys.dm_os_sys_info, colonne virtual_memory_in_bytes :
SELECT
CASE
WHEN virtual_memory_in_bytes / 1024 / (2048*1024) < 1
THEN 'Pas activé'
ELSE '/3GB'
END
FROM sys.dm_os_sys_info;
Bien, mais que faire de la mémoire au-delà de l’espace d’adressage virtuel des
4 Go ? Depuis le Pentium Pro, tous les processeurs Intel 32 bits (famille x86)
incluent un mode de mapping de mémoire appelé PAE (Physical Address Extension),
qui permet d’accéder à 64 Go. En mode PAE, l’unité de gestion mémoire (MMU,
Memory Management Unit, un circuit intégré responsable de l’accès à la mémoire et
des fonctionnalités de pagination) se voit ajouter des lignes d’adressage supplémentaires qui lui permettent de gérer des adresses sur 36 bits. 2^36 / 1 024 / 1 024
= 65 536 Mo = 64 Go.
Pour activer ce mode PAE sur Windows (à partir de Windows 2000), vous devez
ajouter l’option /PAE dans le même fichier boot.ini :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /
fastdetect /PAE
Cette option active le chargement d’une image particulière du noyau de Windows (Ntkrnlpa.exe, ou Ntkrpamp.exe sur une machine multiprocesseurs, au lieu de
Ntoskrnl.exe).
Ceci permet donc au système d’exploitation d’augmenter sa limite adressable à
64 Go, mais les applications restent limitées par leur propre capacité d’adressage
32 bits. Windows leur montre des espaces de mémoire virtuelle sur 4 Go, différents
les uns des autres, qu’elles ne peuvent dépasser. L’utilisation de PAE seule est donc
intéressante lorsque plusieurs processus demandent de la mémoire, mais dans notre
cas, nous voulons faire profiter le seul processus sqlservr.exe de toute notre
mémoire. Nous devons alors utiliser AWE.
AWE (Address Windowing Extensions) est un API Windows qui permet aux applications qui l’implémentent d’accéder à plus de mémoire physique que leur espace
d’adressage virtuel 32 bits. Comme son nom l’indique, AWE effectue un fenêtrage
en régions d’espaces d’adressage, et réserve un plus grand nombre de régions de
