Dynamics AX Performance Analyser est probablement un de mes outils préférés lorsqu’il vient le temps d’optimiser les performances d’un environnement Dynamics AX. Je vais ici parler de deux requêtes qui permettent de savoir si votre système de stockage est une possible cause de vos problèmes de performance.
DISK IO BY HOUR
Le fichier 7-Baseline – Benchmark Queries.sql contient une requête nommée DISK_IO_BY_HOUR. La colonne Read_Latency et Write_Latency indique la latence des disques par heure. Plus la latence est haute, moins la performance sera bonne. Il ne faut pas comparer cette valeur avec les compteurs Avg. Disk sec/Read, Avg. Disk sec/Write, Avg. Disk sec/Transfer de Windows Performance Monitoring puisque SQL calcul la latence de façon différente.
Avant de poursuivre, voici une requête similaire que j'aime bien, mais qui ne donne pas le résultat par heure: How To Examine IO Subsystem Latencies From Within SQL Server
Vous avez maintenant le résultat, alors vous vous demandez si la latence est bonne ou mauvaise. Voici deux réponses :
Lors d’une formation sur Dynamics AX Performance Analyzer, on m’a dit d’ignorer tout ce qui est en dessous de 50ms.
Sur le blogue de Paul S. Randal Are I/O latencies killing your performance il est dit qu’entre 10 et 20ms de latence est considéré comme « Faible » et entre 20 et 100ms comme « Mauvais ».
Il faut aussi vérifier que la constance entre la latence et la quantité de données transférée. Un grand écart indique une variation de performance provenant de votre système de stockage. Cherchez à savoir pourquoi. Stockage partagé? Problème de configuration?
BAD SQL WAITS
SQL prend une note de chaque fois qu'un thread est en mode attente. Il est possible que SQL soit en attente parce qu’il n’a rien à faire, ce qui est très bien, mais il arrive aussi que SQL attend parce que ressource n’est pas disponible, par exemple les disques.
La requête BAD_SQL_WAIT_STATS, aussi dans le fichier 7-Baseline – Benchmark Queries.sql, retourne les « Bad Waits » qui se situe dans le top 3 par heure. Si vous y trouvez PAGEIOLATCH_XX, il se peut que la performance des disques soit la raison des lenteurs de votre système.
La requête de Paul S. Randal vous donne un résultat sommaire : Wait Statistics or please tell me where it hurts.
Même si PAGEIOLATCH_XX se trouve dans les top wait, cela ne veut pas dire que le problème est vos disques. Tout est expliqué ici: Knee-Jerk Wait Statistics : PAGEIOLATCH_SH
Honnêtement, je pense qu’il y a beaucoup plus d’information pertinente dans les liens que j’ai indiqués dans ce billet que dans mon texte, mais c’était mon but de rassembler toute cette information dans un même endroit!