Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Votre serveur a-t-il un problème de CPU / Processeur ?

Le CPU est l'une des ressources matérielle à laquelle il faut prêter attention sur un serveur de base de données (avec les ressources disques, mémoire et réseau).

Une requête qui est exécutée par le serveur est découpée en tâches, et chaque tâche peu se retrouver dans 2 files d'attente sur le serveur :

  • Wait Queue : Tâche en attente d'une ressource
  • Runnable Queue : Tâche en attente de s'exécuter sur l'un des processeurs

Le temps passé dans la Runnable Queue est un très bon indicateur de problème CPU. En effet il existe un Scheduler par CPU sur le serveur et chacun traite une tâche de manière coopérative. Tant que le CPU n'a pas finie la tâche en cours que celle-ci n'est pas bloquée par une attente de ressource, le CPU n'exécutera rien d'autre.

Sous SQL Server 2005 nous avons la vue sys.dm_os_wait_stats qui nous fournie ces informations, sous SQL Server 2000 (et 7 a priori) c'est la commande DBCC SQLPERF(WAITSTATS).

Il faut tout d'abord effacer les compteurs :

DBCC SQLPERF(WAITSTATS, CLEAR)

Attendre un certains temps (quelques heures ou minutes suivant ce que vous souhaitez mesurer) puis…

Sous SQL Server 2005 :

select   sum(signal_wait_time_ms) AS tps_attn_signal_ms,
         cast(100.0 * sum(signal_wait_time_ms) / sum(wait_time_ms) as numeric(20, 2)) AS pct_signal
         sum(wait_time_ms - signal_wait_time_ms) AS tps_attn_ressource_ms
         cast(100.0 * sum(wait_time_ms - signal_wait_time_ms) / sum(wait_time_ms) as numeric(20, 2)) AS pct_ressource
from sys.dm_os_wait_stats

Sous SQL Server 2000 ou 7 :

create table #waitstats

   [wait_type]                nvarchar(120) not null, 
   [waiting_tasks_count]    bigint not null, 
   [wait_time_ms]            bigint not null, 
   [signal_wait_time_ms]    bigint not null
)

insert into #waitstats
exec ('DBCC SQLPERF(WAITSTATS)')

select   sum(signal_wait_time_ms) AS tps_attn_signal_ms,
         cast(100.0 * sum(signal_wait_time_ms) / sum(wait_time_ms) as numeric(20, 2)) AS pct_signal
         sum(wait_time_ms - signal_wait_time_ms) AS tps_attn_ressource_ms
         cast(100.0 * sum(wait_time_ms - signal_wait_time_ms) / sum(wait_time_ms) as numeric(20, 2)) AS pct_ressource
from #waitstats

Le champ qui nous intéresse dans le résultat de la requête est pct_signal qui est la proportion d'attente du CPU, sa valeur doit généralement se situer en dessous de 20%. Au-delà de ce chiffre (si cela se produit constamment) il faudra soit penser à ajouter ou mettre à jour vos processeur, soit faire la chasse aux commandes consommatrices de CPU (tel que les tris et les compilations).

Bon tests…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié jeudi 11 janvier 2007 11:21 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01