29
3.1 Choix de l’architecture matérielle
SELECT c.LastName, c.FirstName, e.Title
FROM HumanResources.Employee AS e
JOIN Person.Contact AS c ON e.ContactID = c.ContactID
OPTION (MAXDOP 2);
Comme elle l’emporte sur l’option de l’instance, cette option de requête peut être
utile pour augmenter le nombre de processeurs défini par « max degree of
parallelism », pour une requête spécifique.
Pression sur les processeurs
Évidemment, la pression sur les processeurs est montrée par leur niveau d’utilisation,
dans le moniteur de performances ou dans le gestionnaire de tâches de Windows
(task manager).
Process Explorer
Nous vous conseillons cet utilitaire développé par Mark Russinovich fait partie de la panoplie
des outils « winternals » disponibles maintenant sur le site de Microsoft. Il vous offre une
vision beaucoup plus complète que le gestionnaire de tâches.
http://technet.microsoft.com/en-us/sysinternals/.
Mais une forte utilisation des processeurs ne veut pas dire pression (car ils peuvent travailler beaucoup sans être stressés), et encore moins que le problème vient
des processeurs eux-mêmes. La pression est montrée par le compteur de performances System:Processor queue length, qui indique la file d’attente sur les processeurs.
Les compteurs de performances sont visibles dans le moniteur système, détaillé dans
la section 5.3
Les vues de gestion dynamique sont aussi de bons indicateurs :
SELECT
SUM(signal_wait_time_ms) as signal_wait_time_ms,
CAST(100.0 * SUM(signal_wait_time_ms) / SUM (wait_time_ms)
AS NUMERIC(20,2)) as [%signal (cpu) waits],
SUM(wait_time_ms - signal_wait_time_ms) as resource_wait_time_ms,
CAST(100.0 * SUM(wait_time_ms - signal_wait_time_ms) /
SUM (wait_time_ms) AS NUMERIC(20,2)) as [%resource waits]
FROM sys.dm_os_wait_stats
Cela vous donne la raison des attentes dans SQL Server, soit sur le processeur
(%signal (cpu) waits), soit sur les ressources (%resource waits), comme le disque
ou les verrous. Un pourcentage important d’attente processeur (en dessus de 20 %)
indique une pression sur les CPU. Pour connaître les détails par type d’attente :
SELECT wait_type, (wait_time_ms * .001) as wait_time_seconds
FROM sys.dm_os_wait_stats
GROUP BY wait_type, wait_time_ms
ORDER BY wait_time_ms DESC;
Vous pouvez aussi voir le nombre de tâches gérées simultanément par un
ordonnanceur :
Précédent

- 41/334

Suivant