Introduction
La procédure sp_sysmon
fournit :
- une vue de l’activité du serveur pour une durée déterminée
- des statistiques sur une gamme étendue d’activité système
Cette procédure est très utile pour analyser l’activité générale du serveur ainsi que pour localiser un point de contention à optimiser.
Lors de l’appel de la procédure sp_sysmon
, celle-ci supprime les
données accumulées dans une série de compteurs qui sont utilisés pendant
l’intervalle échantillon afin de fournir des informations sur les activités du
système et des utilisateurs. À la fin de l’intervalle échantillon, la procédure
lit les compteurs, affiche les rapports et s’arrête.
Syntaxe simplifiée
Il existe 2 méthodes d’utilisation de sp_sysmon
:
- en utilisant un intervalle de temps fixe :
exec sp_sysmon intervalle [,section]
- en utilisant les paramètres begin_sample
et end_sample
pour
démarrer et arrêter l’échantillonnage :
exec sp_sysmon begin_sample
exec proc1
exec proc2
exec sp_sysmon end_sample [,section]
Dans le tableau ci-dessous, la liste des sections :
Section | Paramètre |
---|---|
Application Management Data Cache Management Disk I/O Management ESP Management Index Management Kernel Utilization Lock Management Memory Management Metadata Cache Management Monitor Access to Executing SQL Network I/O Management Parallel Query Management Procedure Cache Management Recovery Management Task Management Transaction Management Transaction Profile Worker Process Management | appmgmt dcache diskio dsp indexmgmt kernel locks memory mdcache monaccess netio parallel pcache recovery taskmgmt xactmgmt xactsum wpm |
Section | Description |
---|---|
Application Management | Statistiques relatives à l’exécution des tâches utilisateur |
Data Cache Management | Statistiques sur l’usage des caches |
Disk I/O Management | E/S disque. Cette section retrace les activités des E/S disque sur la totalité du serveur et indique les lectures, écritures et conflits de sémaphores sur chaque device logique |
ESP Management | Utilisation des procédures stockées étendues |
Index Management | Gestion des indexes : réductions d’encombrement, fractionnement… |
Kernel Utilization | Activités qui prennent place à l’intérieur du
serveur, comme l’utilisation intense des machines
(context switches ), l’utilisation CPU par machine,
contrôles réseau et E/S disque |
Lock Management | Activités sur les verrous, inter blocages, conversion et escalades de verrous, conflits |
Memory Management | Pages allouées et libérées pendant l’intervalle d’échantillonnage |
Metadata Cache Management | Utilisation des caches de métadonnées (objets, indexes et bases de données |
Network I/O Management | Activités du moteur ASE sur le réseau |
Parallel Query Management | Statistiques sur l’exécution de requêtes en parallèle. Nombre de requêtes en parallèle, nombre de réajustements pendant l’exécution, octroi des verrous pendant les fusions et les tris |
Procedure Cache Management | Statistiques sur les procédures et triggers en cache (requêtes, lectures sur disque, suppressions du cache…) |
Recovery Management | Statistiques sur les points de reprise (durée moyenne…), les housekeepers |
Task Management | Connexions ouvertes, commutateurs de tâches contextuels par engine et commutateurs de tâches contextuels par cause |
Transaction Management | Activités de gestion des transactions : caches ULC des utilisateurs, journaux de transactions, demandes de sémaphores d’ULC |
Transaction Profile | Statistiques sur les modifications de données par type de commande, plans de verrouillage |
Worker Process Management | Utilisation des processus de travail, processus de travail octroyés et refusés, succès et échecs des demandes de mémoire pour les processus |
L’entête
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
===========================================================================
Sybase Adaptive Server Enterprise System Performance Report
===========================================================================
Server Version: Adaptive Server Enterprise/1X.X/XXXX/P/<plate-forme>
Server Name: XXXXXXXXXXXX
Run Date: Jan 31, 2002
Statistics Cleared at: 12:00:00
Statistics Sampled at: 12:30:00
Sample Interval: 00:30:00
L’entête donne des informations sur la version d’ASE, ainsi que la date et la durée de l’échantillonnage.
Lecture des résultats
sp_sysmon
affiche des statistiques sur les performances sous la forme d’un
tableau. Les lignes du tableau sont fonctions de la section. Il y a en général
4 colonnes :
- "
per sec
" : moyenne par seconde pendant l’intervalle échantillon - "
per xact
" : moyenne par transaction validée pendant l’intervalle d’échantillon - "
count
" : nombre total pendant l’intervalle échantillon - "
% of total
" : dépend du contexte.
Les sections à connaître
Kernel Utilization
Engine Busy Utilization
Engine 0 0.0 %
Dans cette exemple Il n’y a qu’un seul moteur mais cette section montre
autant d’engines qu’il y en a de configuré. La section "Engine Busy
Utilization
" indique le pourcentage de temps pendant lequel le noyau d’ASE
exécute des tâches sur chaque engine. La ligne récapitulative (quand il y a
plusieurs moteurs) donne le temps d’activité total et moyen pour tous les
moteurs combinés. Cette section peut aider à déterminer s’il y a trop ou peu d’engines ASE.
Si les valeurs sont très élevés (> 90%), l’ajout d’un engine
peut améliorer le temps de réponse et les transmissions de données.
Task Management
Task Management per sec per xact count % of total
------------------------- ------------ ------------ ---------- ------
Connections Opened 0.0 0.0 0 n/a
Task Context Switches by Engine
Engine 0 51.0 204.0 204 100.0 %
Task Context Switches Due To:
Voluntary Yields 0.0 0.0 0 0.0 %
Cache Search Misses 0.0 0.0 0 0.0 %
System Disk Writes 0.0 0.0 0 0.0 %
I/O Pacing 0.0 0.0 0 0.0 %
Logical Lock Contention 0.0 0.0 0 0.0 %
Address Lock Contention 0.0 0.0 0 0.0 %
Latch Contention 0.0 0.0 0 0.0 %
Log Semaphore Contention 0.0 0.0 0 0.0 %
PLC Lock Contention 0.0 0.0 0 0.0 %
Group Commit Sleeps 0.0 0.0 0 0.0 %
Last Log Page Writes 0.0 0.0 0 0.0 %
Modify Conflicts 0.0 0.0 0 0.0 %
I/O Device Contention 0.0 0.0 0 0.0 %
Network Packet Received 25.3 101.0 101 49.5 %
Network Packet Sent 125.3 501.0 501 245.6 %
Other Causes -99.5 -398.0 -398 -195 %
switch | Description |
---|---|
Voluntary Yields |
Time-slice expiré |
Cache Search Misses |
Pages non trouvées dans le cache de données, accès aux disques |
System Disk Writes |
Housekeeper, checkpoint |
I/O Pacing |
Sommeil après avoir dépassé la limite des E/S pour un batch |
Logical Lock Contention |
Contention de verrous de table, page et ligne |
Address Lock Contention |
Contention de verrous en mémoire (OAM…) |
Log Semaphore Contention |
Contention de spinlock sur le journal |
Group Commit Sleeps |
Réduction d’écriture de page de journal redondante |
Last Log Page Writes |
Attente que la dernière page du journal soit écrite sur disque |
Modify Conflicts |
Verrous sur les tables systèmes |
I/O Device Contention |
Contention de device en environnement SMP |
Network Packet Received |
Delais de réception de multiples paquets |
Network Packet Sent |
Sommeil après l’envoi de paquets |
"Task Context Switches Due To
" est une section particulièrement intéressante car elle
permet de déterminer les raisons de changement de contextes et surtout donne
une indication sur la section à surveiller pour résoudre ce problème. C’est, en
général, la première section à regarder.
Il est à noter que le fait d’avoir des compteurs élevés n’est pas forcément signe d’un problème.
La ligne "Cache Search Misses
" ainsi que les lignes concernant les
contention sont particulièrement à surveiller. Un pourcentage supérieur à 10 -
13% pointe en général un problème concernant ces sections.
Housekeeper Task Activity
Housekeeper Task Activity
-------------------------
per sec per xact count % of total
------------ ------------ ----------
Buffer Cache Washes
Clean 20.0 80.0 80 100.0 %
Dirty 0.0 0.0 0 0.0 %
------------ ------------ ----------
Total Washes 20.0 80.0 80
Garbage Collections 2.0 8.0 8 n/a
Pages Processed in GC 0.0 0.0 0 n/a
Statistics Updates 2.0 8.0 8 n/a
Buffer Cache Washes
Cette section indique :
- le nombre de buffers examinés par le gestionnaire de tâches (housekeeper)
- le nombre de buffers qui n’ont pas été modifiés
- le nombre de buffers qui ont été modifiés
Garbage Collections
Cette section indique le nombre de fois que la tâche housekeeper a vérifié l’existence de suppressions validées, indiquant la libération d’un espace devenu utilisable par des pages de données.
"Pages Processed in GC
" indique le nombre de pages sur lesquelles la tâche
housekeeper a réussi à récupérer de l’espace inutilisé dans une page d’une
table DOL.
Statistics Updates
"Statistics Updates
" indique le nombre de contrôles que la tâche housekeeper
a effectué pour voir si des statistiques devaient être enregistrées.
Lock Management
Lock Summary per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Total Lock Requests 1856.5 7426.0 7426 n/a
Avg Lock Contention 0.0 0.0 0 0.0 %
Deadlock Percentage 0.0 0.0 0 0.0 %
Lock Hashtable Lookups 1856.5 7426.0 7426 n/a
Avg Hash Chain Length n/a n/a 0.00000 n/a
"Lock Summary
" fournit des statistiques générales sur les opérations
relatives aux verrous exécutées durant l’intervalle échantillon.
"Total Lock Requests
" indique le nombre total de demandes de verrous.
"Avg Lock Contention
" indique le nombre moyen de conflits de verrous
survenus en pourcentage du nombre total de demandes de verrous. Si le nombre
"Avgt Lock Contention
" est élevé, consulter les informations détaillées
relatives aux verrous ("Lock Detail" ).
"Deadlock Percentage" indique le nombre d’interblocages ("deadlocks") en
pourcentage du nombre total de demandes de verrous. Si cette valeur est élevée,
se reporter à la section "Deadlocks by Lock Type
"
"Lock Hashtable Lookups
" indique le nombre de fois que la table de hachage
de verrou a été consultée pour une recherche de verrou sur une page, une ligne
ou une table.
"Avg Hash Chain Length
" indique le nombre moyen de verrous par compartiment
de hachage durant l’intervalle échantillon. Il est possible de configurer la
taille de la table de hachage de verrou avec le paramètre de configuration lock
hashtable size
. Si le nombre moyen de verrous par chaîne de hachage est
inférieur à quatre, il est possible d’augmenter la taille de la table de
hachage.
Data Cache Management
Cache Statistics Summary (All Caches)
-------------------------------------
per sec per xact count % of total
------------ ------------ ---------- ----------
Cache Search Summary
Total Cache Hits 1254.3 5017.0 5017 100.0 %
Total Cache Misses 0.0 0.0 0 0.0 %
------------------------- ------------ ------------ ----------
Total Cache Searches 1254.3 5017.0 5017
Cache Turnover
Buffers Grabbed 0.0 0.0 0 n/a
Cache Strategy Summary
Cached (LRU) Buffers 1254.3 5017.0 5017 100.0 %
Discarded (MRU) Buffers 0.0 0.0 0 0.0 %
Large I/O Usage
0.0 0.0 0 n/a
Large I/O Effectiveness
Pages by Lrg I/O Cached 0.0 0.0 0 n/a
Asynchronous Prefetch Activity
0.0 0.0 0 n/a
Other Asynchronous Prefetch Statistics
APFs Used 0.0 0.0 0 n/a
APF Waits for I/O 0.0 0.0 0 n/a
APF Discards 0.0 0.0 0 n/a
Dirty Read Behavior
Page Requests 0.0 0.0 0 n/a
---------------------------------------------------------------------------
Cache: default data cache
per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Spinlock Contention n/a n/a n/a 0.0 %
Utilization n/a n/a n/a 100.0 %
Cache Searches
Cache Hits 1254.3 5017.0 5017 100.0 %
Found in Wash 3.0 12.0 12 0.2 %
Cache Misses 0.0 0.0 0 0.0 %
------------------------- ------------ ------------ ----------
Total Cache Searches 1254.3 5017.0 5017
"Total Cache Hits
" indique le nombre de fois qu’une page recherchée est
trouvée dans un cache. "% of total
" donne le pourcentage de présence dans le
cache par rapport au total des recherches.
"Total Cache Misses
" indique le nombre de fois qu’une page n’a pas été
trouvée dans un cache et a été lue sur le disque. "% of total
" donne, en
pourcentage, le nombre de fois que le buffer n’a pas été trouvé dans le cache,
par rapport au nombre total des recherches.
"Total Cache Searches
" indique le nombre total de recherches dans le cache,
y compris les présences et les non-présences dans tous les caches.
Large I/O Usage
Cette section comporte des informations relatives aux demandes d’E/S
étendues dans tous les caches. Si la valeur de "Large I/Os Denied
" est élevée,
analyser les caches séparément pour en déterminer la cause.
Large I/O Effectiveness
La section "Large I/O Effectiveness
" permet d’évaluer les performances dues
aux E/S étendues. Elle compare le nombre de pages extraites dans le cache par
des E/S étendues avec le nombre de pages référencées dans le cache. Si le
pourcentage "Pages by Lrg I/O Used
" est faible, cela signifie que les requêtes
accèdent à un nombre restreint de pages dans le cache. Dans ce cas, analyser
les requêtes individuelles pour identifier la cause du problème. Utiliser
optdiag
pour vérifier la valeur de "Large I/O Efficiency
" pour chaque table et
index.
APFs Denied Due To
Cette section décrit les raisons pour lesquelles les APF (Asynchroned Prefetch) ne sont pas utilisés :
"APF I/O Overloads
" indique le nombre de fois que des APF n’ont pas pu être
utilisés, en raison d’un manque de structures d’E/S disque ou d’un goulet
d’étranglement sur le disque. Si ce nombre est élevé, vérifier les informations
suivantes dans la section "Disk I/O Management
" du rapport.
"APF Limit Overloads
" indique que le pourcentage de zones de buffers pouvant
être utilisés pour une prélecture asynchrone est dépassé. Cette limite est
définie pour la totalité des activités du serveur à l’aide du paramètre de
configuration 'global async prefetch limit
'. Elle peut être optimisée au cas
par cas avec sp_poolconfig
.
"APF Reused Overloads
" indique que l’utilisation des APF n’a pas été
autorisée, en raison d’une anomalie dans une chaîne de pages ou parce que des
buffers extraits par des APF ont été expulsés avant qu’il ait été possible d’y
accéder.
Cache Spinlock Contention
"Spinlock Contention
" indique, en pourcentage, le nombre de fois qu’un
engine a été bloqué par un verrou d’attente et a attendu, par rapport au total
des requêtes de verrouillage d’attente pour le cache. Cette section ne concerne
que les environnements SMP.
Si le conflit de verrou d’attente représente plus de 10 %, il est nécessaire d’utiliser des caches nommés ou ajouter des partitions de cache.
Procedure Cache Management
Procedure Cache Management per sec per xact count % of total
--------------------------- ------------ ------------ ---------- ------
Procedure Requests 0.5 2.0 2 n/a
Procedure Reads from Disk 0.0 0.0 0 0.0 %
Procedure Writes to Disk 0.0 0.0 0 0.0 %
Procedure Removals 0.0 0.0 0 n/a
Procedure Requests
"Procedure Requests
" indique le nombre de fois que des procédures stockées
ont été exécutées. Lors de l’exécution d’une procédure stockée, les
possibilités sont les suivantes :
- une copie en mémoire du plan d’exécution existe et libre, elle est utilisée
- aucune copie de la procédure n’est en mémoire ou bien toutes les copies du plan sont utilisées, de sorte que la procédure doit être lue sur le disque
Procedure Reads from Disk
"Procedure Reads from Disk
" indique le nombre de fois que des procédures
stockées ont été lues sur le disque au lieu d’être copiées dans le cache de
procédures.
"% of total
" indique le pourcentage de lectures de procédures sur le disque,
par rapport au nombre total de requêtes de procédure. Si ce chiffre est
relativement élevé, il se peut que le cache de procédures soit trop petit.
Procedure Writes to Disk
"Procedure Writes to Disk
" indique le nombre de procédures créées pendant
l’intervalle. Ces chiffres peuvent être importants lorsque des programmes
d’application génèrent des procédures stockées.
Procedure Removals
"Procedure Removals
" indique le nombre de fois qu’une procédure a été
supprimée du cache.
Disk I/O Management
Disk I/O Management
-------------------
Max Outstanding I/Os per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Server n/a n/a 0 n/a
Engine 0 n/a n/a 0 n/a
I/Os Delayed by
Disk I/O Structures n/a n/a 0 n/a
Server Config Limit n/a n/a 0 n/a
Engine Config Limit n/a n/a 0 n/a
Operating System Limit n/a n/a 0 n/a
Total Requested Disk I/Os 0.0 0.0 0
Completed Disk I/O's
Total Completed I/Os 0.0 0.0 0 n/a
------------------------- ------------ ------------ ----------
Total Completed I/Os 0.0 0.0 0
Device Activity Detail
----------------------
No Disk I/O in Given Sample Period
Disk I/O Structures
"Disk I/O Structures
" indique le nombre d’E/S retardées en raison d’un
dépassement des limites définies pour les E/S disque. Lorsque ASE dépasse le
nombre de blocs de contrôle d’E/S disque disponibles, les E/S sont retardées
car les tâches doivent obligatoirement être associées à un bloc de contrôle
d’E/S disque avant le lancement d’une demande d’E/S. Si le résultat est une
valeur non nulle, augmenter le nombre de blocs de contrôle d’E/S disque
disponibles en augmentant la valeur du paramètre de configuration 'disk i/o
structures
'.
Requested and Completed Disk I/Os
Les sections ci-après décrivent le nombre d’E/S disque requises ainsi que le
nombre et le pourcentage d’E/S traitées par chaque engine ASE. Les valeurs dans
les colonnes "Total Requested Disk I/Os
" et "Total Completed I/Os
" doivent être
identiques ou quasiment. Ces valeurs sont différentes lorsque des E/S requises
ne sont pas traitées en raison d’une saturation. La valeur relative aux E/S
requises comprend toutes les requêtes lancées pendant l’intervalle échantillon,
dont certaines prennent fin après l’intervalle. Ces E/S ne sont pas
comptabilisées dans la section "Total Completed I/Os
", d’où un pourcentage
inférieur à 100 lorsqu’il n’y a pas de problèmes de saturation. L’inverse est
également vrai. Si des demandes d’E/S interviennent avant le début de
l’intervalle échantillon et si elles sont exécutées pendant l’intervalle, la
valeur dans la colonne "% of Total
" correspondant à la ligne "Total Completed
I/Os
" sera supérieure à 100 %. Si les données indiquent un grand nombre d’E/S
requises et un petit nombre d’E/S exécutées, il se peut que le retard soit
imputable à un goulet d’étranglement dans le système d’exploitation.
Device Activity Detail
Cette section affiche les informations suivantes sur les E/S relatives à chaque device de données sur le serveur :
- les noms des devices physiques et logiques
- le nombre de lectures et d’écritures, ainsi que la totalité des E/S
- le nombre de sémaphores immédiatement disponibles sur le device et le nombre de fois qu’un processus doit attendre qu’un sémaphore se libère
Total I/Os
La section "Total I/Os
" indique le total des lectures et des écritures sur
un device. "% of total
" indique le pourcentage de lectures et d’écritures sur
chaque device nommé, par rapport au nombre de lectures et d’écritures sur la
totalité des devices. Ces informations permettent de vérifier la répartition
des E/S entre les disques et de prendre des décisions relatives à l’emplacement
des objets pour améliorer la répartition des E/S entre les devices. Par
exemple, les données peuvent indiquer que certains disques sont plus sollicités
que d’autres. Si une part importante des E/S est traitée sur un device nommé
déterminé, analyser les tables figurant sur le device pour trouver la solution
au problème.
Device Semaphore Granted and Waited
Les sections "Device Semaphore Granted
" et "Device Semaphore Waited
"
indiquent le nombre de fois qu’une demande de sémaphore aboutit immédiatement
et le nombre de fois que le sémaphore est occupé, auquel cas la tâche doit
attendre qu’il se libère. "% of total
" indique, en pourcentage, le nombre de
fois que le sémaphore était libre (ou occupé), par rapport au nombre total de
sémaphores sollicités. Ces données ne sont utiles que dans un environnement
SMP. Lorsqu’Adaptive Server doit effectuer une E/S disque, il affecte à la
tâche le sémaphore du device correspondant pour obtenir une structure d’E/S en
bloc. Sur des systèmes SMP, plusieurs engines peuvent tenter de transmettre
simultanément des E/S aux mêmes.
Network I/O Management
Network I/O Management
----------------------
Total Network I/O Requests 25.3 101.0 101 n/a
Network I/Os Delayed 0.0 0.0 0 0.0 %
Total TDS Packets Received per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Engine 0 25.3 101.0 101 100.0 %
------------------------- ------------ ------------ ----------
Total TDS Packets Rec'd 25.3 101.0 101
Total Bytes Received per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Engine 0 934.0 3736.0 3736 100.0 %
------------------------- ------------ ------------ ----------
Total Bytes Rec'd 934.0 3736.0 3736
Avg Bytes Rec'd per Packet n/a n/a 36 n/a
---------------------------------------------------------------------------
Total TDS Packets Sent per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Engine 0 125.3 501.0 501 100.0 %
------------------------- ------------ ------------ ----------
Total TDS Packets Sent 125.3 501.0 501
Total Bytes Sent per sec per xact count % of total
------------------------- ------------ ------------ ---------- --------
Engine 0 56600.5 226402.0 226402 100.0 %
------------------------- ------------ ------------ ----------
Total Bytes Sent 56600.5 226402.0 226402
Avg Bytes Sent per Packet n/a n/a 451 n/a
Total Network I/Os Requests
"Total Network I/O Requests
" indique le nombre total de paquets reçus et
transmis.
Lorsque le nombre de paquets par seconde que le réseau peut prendre en charge est connu, il est alors possible d’évaluer la capacité d’Adaptive Server par rapport au débit du réseau. Le traitement est le même, qu’il s’agisse d’une E/S entrante ou sortante. Si Adaptive Server reçoit une commande dépassant la taille du paquet, il doit attendre de recevoir la commande complète avant de commencer le traitement. Par conséquent, les commandes qui requièrent plus d’un paquet sont plus longues à traiter et consomment davantage de ressources. Si la moyenne d’octets par paquet avoisine la taille du paquet par défaut définie pour le serveur, configurer des tailles supérieures pour certaines connexions. Il est possible de définir la taille du paquet réseau pour toutes les connexions ou bien permettre à certaines d’utiliser des tailles de paquet supérieures.
Network I/Os Delayed
"Network I/Os Delayed
" indique le nombre de fois qu’une E/S est mise en
attente. Si ce nombre n’est jamais nul, consulter l’administrateur système.