30
Chapitre 3. Optimisation du matériel
SELECT scheduler_id, current_tasks_count, runnable_tasks_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;
Ce qui vous donne une idée précise de la charge de travail que doit supporter le
système. Un nombre élevé de runnable_tasks_count, par exemple 10 sur plusieurs
processeurs, peut vous indiquer qu’une mise à jour matérielle (ou une simplification
de votre code) est nécessaire. Voici quelques ressources utiles :
• Troubleshooting Performance Problems in SQL Server 2005
http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx
• measure CPU pressure
http://blogs.msdn.com/sqlcat/archive/2005/09/05/461199.aspx
3.1.2 Mémoire vive
Utilisation de toute la mémoire en 32 bits
Dans un environnement 32 bits, l’espace d’adressage est limité à 4 Go. Un processeur 32 bits utilise 32 bits pour positionner chaque octet de mémoire. Chaque bit
représentant deux valeurs possibles (O ou 1), une adresse mémoire longue de 32 bits
peut donc représenter 2 puissance 32 positions. 2^32 / 1 024 / 1 024 = 4 096 Mo ≈
4 Go.
Cet espace d’adressage est divisé en deux parties égales. Les deux premiers gigaoctets sont disponibles aux applications, ce qu’on appelle la mémoire utilisateur
(user memory), les deux suivants sont réservés au système d’exploitation, et constituent la mémoire du noyau (kernel memory). Même si votre serveur n’a pas 4 Go de
RAM physique, Windows adresse toute la plage en effectuant un mapping d’adresses
virtuelles vers les adresses physiques, à l’aide d’un processus appelé VMM, Virtual
Memory Manager. 1 Le VMM est comme un escroc immobilier qui vend à des clients
différents la même parcelle de terre. Grâce à lui, chaque processus en activité voit un
espace de 2 Go de RAM.
Sur une machine dédiée à SQL Server, l’activité du système d’exploitation luimême sera peu importante, et elle ne nécessitera pas les 2 Go de kernel memory. Vous
avez la possibilité d’ajuster la distribution entre la mémoire utilisateur et la mémoire
du système d’exploitation, à l’aide d’une option de chargement du noyau. Dans le
fichier boot.ini, situé à la racine de votre partition de boot, sur la ligne correspondant à votre système d’exploitation dans la section [operating systems], ajoutez
l’option /3GB. Exemple :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /
fastdetect /3GB
Ce faisant, vous indiquez à Windows de libérer 1 Go supplémentaire pour les
applications qui le prennent en charge (elles doivent avoir activé le bit
1. William BOSWELL, Inside Windows Server 2003, Addison Wesley, 2003.
Chapitre 3. Optimisation du matériel
SELECT scheduler_id, current_tasks_count, runnable_tasks_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;
Ce qui vous donne une idée précise de la charge de travail que doit supporter le
système. Un nombre élevé de runnable_tasks_count, par exemple 10 sur plusieurs
processeurs, peut vous indiquer qu’une mise à jour matérielle (ou une simplification
de votre code) est nécessaire. Voici quelques ressources utiles :
• Troubleshooting Performance Problems in SQL Server 2005
http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx
• measure CPU pressure
http://blogs.msdn.com/sqlcat/archive/2005/09/05/461199.aspx
3.1.2 Mémoire vive
Utilisation de toute la mémoire en 32 bits
Dans un environnement 32 bits, l’espace d’adressage est limité à 4 Go. Un processeur 32 bits utilise 32 bits pour positionner chaque octet de mémoire. Chaque bit
représentant deux valeurs possibles (O ou 1), une adresse mémoire longue de 32 bits
peut donc représenter 2 puissance 32 positions. 2^32 / 1 024 / 1 024 = 4 096 Mo ≈
4 Go.
Cet espace d’adressage est divisé en deux parties égales. Les deux premiers gigaoctets sont disponibles aux applications, ce qu’on appelle la mémoire utilisateur
(user memory), les deux suivants sont réservés au système d’exploitation, et constituent la mémoire du noyau (kernel memory). Même si votre serveur n’a pas 4 Go de
RAM physique, Windows adresse toute la plage en effectuant un mapping d’adresses
virtuelles vers les adresses physiques, à l’aide d’un processus appelé VMM, Virtual
Memory Manager. 1 Le VMM est comme un escroc immobilier qui vend à des clients
différents la même parcelle de terre. Grâce à lui, chaque processus en activité voit un
espace de 2 Go de RAM.
Sur une machine dédiée à SQL Server, l’activité du système d’exploitation luimême sera peu importante, et elle ne nécessitera pas les 2 Go de kernel memory. Vous
avez la possibilité d’ajuster la distribution entre la mémoire utilisateur et la mémoire
du système d’exploitation, à l’aide d’une option de chargement du noyau. Dans le
fichier boot.ini, situé à la racine de votre partition de boot, sur la ligne correspondant à votre système d’exploitation dans la section [operating systems], ajoutez
l’option /3GB. Exemple :
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /
fastdetect /3GB
Ce faisant, vous indiquez à Windows de libérer 1 Go supplémentaire pour les
applications qui le prennent en charge (elles doivent avoir activé le bit
1. William BOSWELL, Inside Windows Server 2003, Addison Wesley, 2003.
