SQL Server 32 bits et AWE

AWE : Address Windowing Extensions et son mécanisme PAE (Physical Address Extension) sont un système de pagination de mémoire virtuelle en RAM pour des OS Windows 32 bits. AWE ne permet pas de dépasser la limite d’adressabilité d’une mémoire vive qui en 32 bits ne peut excéder 2^32 bits soit 4 Go, mais se sert des giga octets supplémentaires comme réserve pour la pagination. Ceci améliore de façon drastique les performances lorsque la mémoire est un peu juste !

En fait Windows utilise un mécanisme de mémoire virtuelle sous forme de fichier (pagefile.sys). Le disque c’est au bas mot 1000 fois plus lent en accès que la mémoire ! D’où l’avantage énorme de supplanter le fichier par de la RAM.

Avec 3 Go de RAM, l’OS prends 1 GO et laisse le reste aux applications.

Avec 4 Go de RAM, l’OS prends 2 GO et laisse le reste aux applications. Ceci n’est pas très intéressant pour SQL Server sur une machine dédié car l’OS ne basse presque pas du fait que SQL Server incorpore son propre OS qui s’occupe directement des processus, des accès disque et de la gestion de la RAM. Il ne reste donc au serveur que deux tâches : lancer les autres process (très limité sur un serveur dédié) et s’occuper du réseau. C’est pourquoi la bonne configuration dans ce cas est de faire 3/4 pour SQL Server et 1/4 pour l’OS, grâce au siwtch /3GB.

Avec n Go compris dans l’intervalle ]4, 16} Go la mémoire virtuelle en RAM fera 4 – n Go. Il y aura donc 3 Go en accès direct pour SQL Server, 1 Go pour l’OS et 4 – n Go de mémoire indirecte (pagination) pour SQL Server, soit au total RAM – 1 Go pour SQL Server.

Avec n Go compris dans l’intervalle ]16, 64} Go la mémoire virtuelle en RAM fera 4 – n Go, mais vous ne devez plus utiliser le switch /3GB. En effet, il faut à l’OS s’occuper des échanges entre mémoire haute (virtuelle) et mémoire basse (directe) grâce à son mécanisme de pagination (PAE). La zone d’échange doit donc être agrandie et c’est pour cela que l’on revient à un partage de la mémoire directe en 50/50. Il y aura donc 2 Go en accès direct pour SQL Server, 2 Go pour l’OS et 4 – n Go de mémoire indirecte (pagination) pour SQL Server, soit au total RAM – 2 Go pour SQL Server.

Voici maintenant l’ensemble des paramètres pour appliquer ce principe :


              |    boot.ini    |                    sp_configure
     RAM      |----------------|---------------------------------------------
     max      |  /3GB  | /PAE  |  max memory server size    |  AWE enabled
--------------|--------|-------|----------------------------|----------------
         2 Go |   non  |  non  |                            |      non
         3 Go |   non  |  non  |                            |      non
         4 Go |   oui  |  non  |  3072 (Mo)                 |      non  
> 4, <= 16 Go |   oui  |  oui  |  RAM - 1024 (Mo)           |      oui
>16, <= 64 Go |   non  |  oui  |  RAM - 2048 (Mo)           |      oui

Boot.ini est le fichier de boot de windows (en général en racine de la partition bootable C:\)
sp_configure est la procédure stockée de configuration du serveur.
ATTENTION : par défaut la procédure sp_configure ne laisse voir qu’un minimum de paramètres.
Pour voir et manipuler tous les paramètres de cette procédure vuillez configurer sp_configure comme suit :

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

Exemple boot.ini avec /3GB et /PAE :

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Server Version 4.00" /3GB /PAE

Dans tous les cas vous devrez relancer l’OS et SQL Server. En effet ces paramètres nécessite la lecture du fichier boot.ini qui ne se fait qu’au démarrage du serveur.

De la même façon, la mise en place des paramètres sp_configure ne peut être appliquée qu’après que la paramétrage OS ait été pris en compte.

Avec Windows 2008, le fichier boot.ini est remplacé par les données de configuration de démarrage (BCD, Boot Configuration Data) et l’utilitaire de configuration bcdedit.exe.

A partir de SQL Server 2005, il est intéressant d’octroyer les droits de verrouillage des pages en mémoire au
compte SQL Server. pour cela lire : http://technet.microsoft.com/en-us/library/ms190730(SQL.90).aspx

PS : pour SQL Server version 2000 l’utilisation de AWE avec le service pack 4, vous devez passer le correctif mentionné dans cet article de la KB :

http://www.microsoft.com/downloads/details.aspx?familyid=7c407047-3f1f-48b8-9e4c-dc32875e1961&displaylang=en


--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence  * * * * *

MVP Microsoft SQL Server

3 réflexions au sujet de « SQL Server 32 bits et AWE »

  1. Avatar de zinzinetizinzineti

    Ainsi, votre tableau Pour RAM max compris entre ]4 , 16 Go] ne serait-il pas plus intéressant d’opter pour le /PAE ?

    | boot.ini | sp_configure
    RAM |—————-|———————————————
    max | /3GB | /PAE | max memory server size | AWE enabled
    ————–|——–|——-|—————————-|—————-
    2 Go | non | non | | non
    3 Go | non | non | | non
    4 Go | oui | non | 3072 (Mo) | non
    > 4, 16,

  2. Avatar de zinzinetizinzineti

    Très intéressant article (en français) sur la gestion des mémoires de SQL SERVER sur un OS 32 bits.
    Merci pour ce que vous apportez à la communauté francophone dans le domaine du T-SQL.
    Par ailleurs, une petite remarque concernant votre article sur AWE. Dans le fichier boot.ini vous indiquez l’utilisation simultanée des 2 commutateurs /3GB et /PAE. Il me semble que Microsoft déconseille l’utilisation simultanée de /3GB et /PAE

    ci-dessous votre exemple
    ————————
    [boot loader]
    timeout=30
    default=multi(0)disk(0)rdisk(0)partition(2)WINNT
    [operating systems] multi(0)disk(0)rdisk(0)partition(2)WINNT= »Windows NT Server Version 4.00″ /3GB /PAE

    Aussi dans votre tableau ci-dessous,
    Pour RAM max > 4 et 4, 16,

Laisser un commentaire