Activation de la mémoire AWE pour SQL Server
Address Windowing Extensions (AWE) permet à des systèmes d'exploitation 32 bits d'accéder à de grandes quantités de mémoire. La mémoire AWE est exposée par le système d'exploitation et est implémentée avec de légères différences dans Microsoft Windows 2000 Server et Windows Server 2003. AWE est activée à l'aide de Option awe enabled.
Utilisation de la mémoire mappée AWE sous Windows 2000 Server
Les instances de MicrosoftSQL Server exécutées sur Windows 2000 allouent de la mémoire pendant le démarrage de SQL Server d'après la séquence d'événements ci-après :
Si la mémoire physique disponible est inférieure à l'espace d'adressage virtuel en mode utilisateur, AWE ne peut pas être activé. Dans ce cas SQL Server s'exécute en mode non AWE, quels que soient les paramètres de l'option awe enabled.
Si la mémoire physique disponible est supérieure à l'espace d'adressage virtuel en mode utilisateur, AWE peut être activé.
Si la mémoire physique disponible est supérieure à la valeur de l'option de max server memory, l'instance de SQL Server verrouille la quantité de mémoire spécifiée par l'option max server memory.
Si la mémoire physique disponible est inférieure à la valeur de l'option max server memory ou si cette option n'a pas été définie, l'instance de SQL Server verrouille toute la mémoire disponible excepté 256 mégaoctets (Mo).
Une fois allouée, la mémoire mappée AWE ne peut pas être libérée avant que SQL Server ne soit arrêté.
Configuration des options de mémoire
Nous vous recommandons fortement de définir une valeur pour l'option max server memory chaque fois que vous activez AWE. Lorsque awe enabled a la valeur 1 (et que la quantité de mémoire physique disponible est supérieure à l'espace de processus en mode utilisateur), les instances de SQL Server exécutées sur Windows 2000 verrouillent presque toute la mémoire disponible (ou la valeur de max server memory si l'option a été définie) lorsque le serveur est démarré. Si l'option max server memory n'est pas définie, les autres applications ou instances de SQL Server disposent de moins de 128 Mo de mémoire physique.
Le pool de mémoire mappé AWE ne peut pas être permuté vers les fichiers système de pagination. Windows doit permuter d’autres applications si un supplément de mémoire physique est nécessaire, ce qui peut affecter les performances de ces autres applications.
Pour ne pas affecter les performances d'autres applications, configurez max server memory de façon à laisser de la mémoire supplémentaire disponible pour répondre aux divers besoins d'autres applications et du système d'exploitation. Vous pouvez déterminer la quantité de mémoire que vous pouvez allouer en toute sécurité aux instances de SQL Server en identifiant la quantité de mémoire disponible après le démarrage de toutes les autres applications devant être utilisées sur l'ordinateur.
[!REMARQUE]
Pour Windows 2000 Server, min server memory est ignoré pour SQL Server AWE.
Utilisez le compteur Mémoire totale du serveur (Ko) de l'Analyseur de performances SQL Server pour déterminer la quantité de mémoire allouée par l’instance de SQL Server exécutée en mode AWE ou sélectionner l'utilisation de la mémoire par sysperfinfo.
Pour plus d'informations, consultez Surveillance de l'utilisation de la mémoire.
Exécution d'instances multiples de SQL Server avec AWE
Si votre serveur exécute Windows 2000, chaque instance doit disposer d'un paramètre max server memory. Étant donné que SQL Server sur les systèmes d'exploitation Windows 2000 ne prend pas en charge l'allocation dynamique de la mémoire mappée AWE, nous vous recommandons de définir l'option max server memory pour chaque instance.
La somme des valeurs max server memory pour l’ensemble des instances doit être inférieure à la quantité totale de mémoire physique de l’ordinateur. Si la somme de ces valeurs excède la quantité de mémoire physique totale, certaines des instances ne démarrent pas ou disposent de moins de mémoire que la quantité spécifiée par le paramètre max server memory. Par exemple, supposez qu’un ordinateur dispose de 16 gigaoctets (Go) de mémoire physique et possède trois instances de SQL Server installées. Qui plus est, la valeur de max server memory est définie à 8 Go pour chaque instance. Si vous arrêtez, puis redémarrez les trois instances, l'allocation de mémoire est la suivante :
La première instance a accès à 8 Go de mémoire physique.
La seconde instance démarre, mais a accès à un peu moins de 8 Go de mémoire physique (jusqu'à 128 Mo de moins).
La troisième instance démarre en mode de mémoire dynamique et a accès à une quantité inférieure ou égale à 256 Mo de mémoire physique.
Pour plus d'informations, consultez Gestion de la mémoire pour des bases de données volumineuses.
Utilisation de la mémoire mappée AWE avec Windows Server 2003
SQL Server gère l'allocation dynamique de la mémoire AWE sur Windows Server 2003. Au démarrage, SQL Server réserve uniquement une petite portion de mémoire AWE mappée. Lorsqu'une quantité supérieure de mémoire AWE est nécessaire, le système d'exploitation l'alloue de manière dynamique à SQL Server. De même, si les ressources requises sont moindres, SQL Server peut réattribuer au système d'exploitation la mémoire AWE mappée, qui sera alors utilisée par d'autres processus ou d'autres applications. Pour plus d'informations sur l'option de configuration awe enabled, consultez Option awe enabled.
La quantité de mémoire physique prise en charge a augmenté avec l'introduction des systèmes d'exploitation Windows Server 2003. La mémoire physique accessible par AWE dépend du système d'exploitation que vous utilisez. La liste ci-après indique la quantité maximale de mémoire physique accessible par chaque système d'exploitation Windows Server 2003 au moment de l'écriture.
Windows Server 2003 Standard Edition prend en charge jusqu'à 4 gigaoctets (Go) de mémoire physique.
Windows Server 2003 Enterprise Edition prend en charge jusqu'à 32 gigaoctets (Go) de mémoire physique.
Windows Server 2003 Datacenter Edition prend en charge jusqu'à 64 gigaoctets (Go) de mémoire physique.
Configuration des options de mémoire
SQL Server alloue de façon dynamique la mémoire AWE mappée lors de son exécution sur toutes les éditions du système d'exploitation Windows Server 2003. Autrement dit, le pool de mémoires tampons peut gérer dynamiquement la mémoire mappée AWE (en respectant les contraintes des options min server memory et max server memory) pour équilibrer l'utilisation de la mémoire SQL Server en fonction des besoins de l'ensemble du système.
Lorsque AWE est activée, SQL Server tente toujours d'utiliser la mémoire mappée AWE. Cela s'applique à toutes les configurations de mémoire, y compris les ordinateurs configurés pour fournir aux applications moins de 3 Go d'espace d'adressage en mode utilisateur.
- Nous vous recommandons de définir AWE comme mode de mémoire par défaut pour SQL Server exécuté sur Windows Server 2003. La fonctionnalité d'ajout de mémoire à chaud nécessite l'activation de AWE lors du démarrage de SQL Server. Pour plus d'informations, consultez Ajout de mémoire à chaud.
[!REMARQUE]
La mémoire AWE n'est pas requise et ne peut pas être configurée sur les systèmes d'exploitation 64 bits.
La mémoire mappée AWE étant prise en charge en dessous de 3 Go, vous pouvez définir les valeurs min server memory et max server memory dans la plage de mémoire physique ou utiliser les valeurs par défaut pour les deux options.
Vous pouvez envisager de définir la valeur de max server memory pour SQL Server afin de garantir une mémoire supplémentaire pour d'autres applications exécutées sur l’ordinateur. Bien que SQL Server puisse libérer dynamiquement de la mémoire mappée AWE, la quantité actuelle de mémoire mappée AWE allouée ne peut pas être permutée vers le fichier d'échange.
Pour rendre AWE disponible pour une instance de SQL Server, utilisez sp_configure pour affecter à l'option awe enabled la valeur 1, puis redémarrez SQL Server.
Pour plus d'informations sur les options min server memory et max server memory, consultez Options de mémoire du serveur.
Avant d'activer AWE, vous devez configurer la stratégie Verrouillage des pages en mémoire. Pour plus d'informations, consultez Procédure : activer l'option Lock Pages in Memory (Windows).
Exemple
L'exemple suivant montre comment activer AWE et configurer une limite de 1 Go pour min server memory et 6 Go pour max server memory.
Configurez d'abord AWE :
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
Après le redémarrage de SQL Server, le message suivant est écrit dans le journal des erreurs SQL Server : « Address Windowing Extensions activé ».
Ensuite, configurez la mémoire virtuelle :
sp_configure 'min server memory', 1024
RECONFIGURE
GO
sp_configure 'max server memory', 6144
RECONFIGURE
GO
Dans cet exemple, les paramètres de mémoire sont définis pour que le pool de mémoires tampons gère dynamiquement la mémoire mappée AWE entre 1 et 6 Go. Si d'autres applications demandent de la mémoire supplémentaire, SQL Server peut libérer la mémoire AWE allouée si elle n'est pas nécessaire. Dans cet exemple, la quantité maximale de la mémoire mappée AWE qui peut être libérée est de 1 Go.
La mémoire AWE dynamique permet également à SQL Server d'augmenter la mémoire si de la mémoire supplémentaire est ajoutée à un ordinateur prenant en charge l'ajout de mémoire à chaud. Disponible dans Windows Server 2003, éditions Enterprise et Datacenter, l'ajout de mémoire à chaud permet d'ajouter de la mémoire pendant que l'ordinateur fonctionne. Par exemple, supposez que SQL Server, exécuté sur Windows Server 2003 Enterprise Edition, est démarré sur un ordinateur disposant de 16 Go de mémoire physique. Le système d'exploitation est configuré pour limiter les applications à 2 Go d'espace d'adressage de mémoire virtuelle ; AWE a été activé sur SQL Server. Ultérieurement, l'administrateur système ajoute 16 Go de mémoire pendant que l'ordinateur est en cours d'exécution. SQL Server reconnaît immédiatement la mémoire supplémentaire et peut, si nécessaire, l'exploiter.
Pour plus d'informations sur l'utilisation d'AWE, consultez la documentation de Windows Server 2003.
Exécution d'instances multiples de SQL Server avec AWE
Si vous exécutez plusieurs instances de SQL Server sur le même ordinateur, et que chacune utilise de la mémoire mappée AWE, vous devez veiller à ce que les instances s'exécutent comme prévu.
Si votre serveur exécute Windows Server 2003, chaque instance doit disposer d'un paramètre min server memory. Étant donné que SQL Server sur Windows Server 2003 prend en charge la gestion dynamique de la mémoire AWE mappée, nous vous recommandons de définir l'option min server memory pour chaque instance. La mémoire mappée AWE ne pouvant pas être permutée vers le fichier d'échange, la somme des valeurs min server memory pour l’ensemble des instances doit être inférieure à la quantité totale de mémoire physique de l’ordinateur.
L'option min server memory ne force pas SQL Server à acquérir une quantité minimale de mémoire au démarrage. La mémoire est allouée à la demande en fonction de la charge de travail de la base de données. Cependant, une fois que le seuil de min server memory est atteint, la mémoire n'est pas libérée par SQL Server si cela fait passer la quantité de mémoire de SQL Server sous cette quantité. Pour vous assurer que chaque instance a alloué au moins autant de mémoire que la valeur min server memory, nous vous recommandons d'exécuter une charge de serveur de base de données peu après le démarrage. Lors d'une activité normale du serveur, la quantité de mémoire disponible par instance varie, mais n'est jamais inférieure à la valeur min server memory disponible pour chaque instance.
Vous pouvez définir la valeur de l'option max server memory ou conserver le paramètre par défaut. Conserver la valeur par défaut de max server memory entraîne une concurrence entre les instances de SQL Server pour obtenir de la mémoire.
Utilisation du clustering de basculement avec AWE
Si vous utilisez le clustering de basculement de SQL Server et la mémoire AWE, vous devez vous assurer que la somme des valeurs du paramètre max server memory pour toutes les instances est inférieure à la quantité minimale de mémoire physique disponible sur n'importe quel serveur du cluster de basculement. Si le nœud de basculement possède moins de mémoire physique que le nœud d'origine, les instances de SQL Server risquent de ne pas démarrer ou de démarrer avec moins de mémoire que sur le nœud d'origine.