Analyse des performances d'un serveur Sybase ASE avec sp_sysmon


1- Introduction

La procédure sp_sysmon fournit :

Cette procédure est très utile pour analyser l'activité générale du serveur ainsi que pour localiser un point à 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. A la fin de l'intervalle échantillon, la procédure lit les compteurs, affiche les rapports et s'arrête.

2-Syntaxe simplifiée

Il existe 2 méthodes d'utilisation de sp_sysmon :

- en utilisant un intervalle de temps fixe :

sp_sysmon intervalle [,section]

- en utilisant les paramètres begin_sample et end_sample pour démarrer et arrêter l'échantillonnage :

sp_sysmon begin_sample
proc1
proc2
sp_sysmon end_sample [,section]

Section Param. Section Param. Section Param.
Application Management appmgmt Lock Management locks Procedure Cache Management pcache
Data Cache Management dcache Memory Management memory Recovery Management recovery
Disk I/O Management Diskio Metadata Cache Management mdcache Task Management taskmgmt
ESP Management Dsp Monitor Access to Executing SQL monaccess Transaction Management xactmgmt
Index Management indexmgmt Network I/O Management netio Transaction Profile xactsum
Kernel Utilization kernel Parallel Query Management parallel Worker Process Management wpm

Fournit des statistiques relatives à l'exécution des tâches utilisateur.

sp_sysmon affiche les statistiques de tous les caches et de chaque cache nommé.

Cette section décrit les E/S disque. Elle retrace les activités des E/S disque sur la totalité du serveur et indique les lectures, les écritures et les conflits de sémaphores sur chaque device logique.

Cette section fournit des informations relatives à l'utilisation des procédures stockées

étendues.

Communique la gestion des index, incluant réductions d'encombrement, et fractionnement des index.

Établit un rapport sur les activités qui prennent place à l'intérieur du serveur, comme l'utilisation intense des machines, l'utilisation CPU par machine, les contrôles réseau, et les contrôles des E/S disque.

Renseigne sur les verrous, les inter blocages, la conversion des verrous et le conflit de verrous.

Indique le nombre de pages allouées et libérées pendant l'intervalle échantillon.

Renseigne sur l'utilisation des caches de métadonnées qui stockent les informations relatives aux trios types de caches : objets, index et base de données.

Retrace les activités de chaque moteur ASE sur le réseau.

Fournit des informations sur l'exécution de requêtes en parallèle. Il indique le nombre total de requêtes en parallèle, le nombre de fois que le nombre de processus de travail a été ajusté pendant l'exécution et l'octroi de verrous, pendant les fusions et les tris.

Indique le nombre de fois que des procédures stockées et des trigger ont fait l'objet de requêtes, de lecture sur le disque et suppressions.

Ces données indiquent le nombre de point de reprise générés par le processus de pont de reprise normal, le nombre de points de reprise générés par la tâche housekeeper et la durée moyenne pour chaque type.

Fournit des informations sur les connexions ouvertes, les commutateurs de tâches contextuels par moteur et les commutateurs de tâches contextuels par cause.

Fournit des informations sur les activités de gestion des transactions, telles que le vidage du cache de journaux utilisateur (ULC) dans les journaux de transaction, les enregistrements de journal d'ULC, les demandes de sémaphore d'ULC,...

Fournit des informations sur les modifications de données par type de commande et par plan de verrouillage de table.

Indique l'utilisation des processus de travail, y compris le nombre des demandes de processus de travail qui ont été octroyées et refuses, ainsi que le succès ou l'échec des demandes de mémoire pour ces processus.

3- 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.

4- 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 :

5- Les sections à connaître

5-1- 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 de moteurs 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 moteur. 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 de moteurs ASE. Si les valeurs sont très élevés (> 90%), l'ajout d'un moteur peut améliorer le temps de réponse et les transmissions de données.

5-2- 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 très 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.

5-3- 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

5-3-1- Buffer Cache Washes

Cette section indique :

5-3-2- 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.

5-3-3- 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.

5-4-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.

5-5- 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" indique 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" indique, 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.

5-5-1- 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.

5-5-2- 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.

5-5-3- APFs Denied Due To

Cette section décrit les raisons pour lesquelles les APF (Asynchroned Prefetch) ne sont pas utilisées :

"APF I/O Overloads" indique le nombre de fois que des APF n'ont pas pu être utilisées, 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ées 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.

5-5-4- Cache Spinlock Contention

"Spinlock Contention" indique, en pourcentage, le nombre de fois qu'un moteur 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.

5-6- 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

5-6-1- 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 :

o une copie en mémoire du plan d'exécution de requête pour qu'il soit copié et utilisé ;

o 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.

5-6-2- 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.

5-6-3- 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.

5-6-4- Procedure Removals

"Procedure Removals" indique le nombre de f ois qu'une procédure a été supprimée du cache.

5-7- 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

5-7-1- 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'.

5-7-2- 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 moteur 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 elle 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.

5-7-3- Device Activity Detail

Cette section affiche les informations suivantes sur les E/S relatives à chaque device de données sur le serveur :

5-7-4- 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.

5-7-5- 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 moteurs peuvent tenter de transmettre simultanément des E/S aux mêmes.

5-8- 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

5-8-1- 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.

5-8-2- 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.


Annexe

Historique

Version Date Commentaires
1.0 07/2002 Version initiale

Liens

Sybase Adaptive Server Enterprise 15.0.2 Books OnLine - Performance and Tuning Series: Monitoring Adaptive Server with sp_sysmon