Share via


diskidlehistogram

Cette action produit un histogramme qui affiche toute l’activité du disque et le temps d’inactivité.

-a diskidlehistogram [-disknum <n>] [-buckets B1 B2 ... Bn] [-idletimeout T1 T2 ... Tn] [-idletheshold <t>] [-spindownOverhead [t]] [-spinupOverhead [t]] [-exc_file File1 File2 ... FileN] [-exc_filestr String1 String2 ... StringN] [-exc_filere <regex>]

Options

-disknum<n>
n indique le numéro de disque (index de disque basé sur 0). La valeur par défaut est de générer des histogrammes pour tous les disques.

-bucketsB1 B2 ... Bn
Les arguments indiquent différentes plages de durée d’inactivité, en secondes. Les compartiments par défaut sont les suivants :

  • [0 s, 1 s]

  • [1 s, 5 s]

  • [5 s, 60 s]

  • [60 s, 180 s]

  • [180 s, 600 s]

  • [600 s, 900 s]

  • [900 s, 1200 s]

  • [1200 s, 1800 s]

  • [1800 s, +inf]

Un histogramme de disque inactif affiche la distribution du temps d’inactivité du disque et le nombre de périodes d’inactivité sur différentes plages de durée d’inactivité, comme illustré par les exemples de valeurs du tableau suivant.

Moins de 1 seconde 1 à 600 secondes Plus de 600 secondes

Durée d’inactivité

1 000

1 000

2000

Pourcentage du temps d’inactivité total

25

25

50

Nombre d’inactivités

90

5

5

Pourcentage du nombre total d’inactifs

90

5

5

La première ligne affiche les compartiments de l’histogramme : différentes plages de longueur inactive.

La deuxième ligne affiche le temps d’inactivité cumulé pour chaque compartiment. Par exemple, le temps d’inactivité cumulé pour toutes les périodes d’inactivité inférieures à 1 seconde est de 1 000 secondes.

La troisième ligne calcule le pourcentage de temps d’inactivité pour chaque compartiment en divisant le temps d’inactivité d’un compartiment par le temps d’inactivité total.

La quatrième ligne est le nombre de périodes d’inactivité capturées pour chaque compartiment. Dans cet exemple, il existe 90 périodes d’inactivité d’une durée inférieure à une seconde.

La dernière ligne calcule le pourcentage de périodes d’inactivité pour chaque compartiment en divisant le nombre de périodes d’inactivité d’un compartiment par le nombre total de périodes d’inactivité.

La commande suivante génère les compartiments dans la liste suivante : -buckets 1s 5s 60s 180s :

  • [0, 1 s]

  • [1 s, 5 s]

  • [5 s, 60 s]

  • [60 s, 180 s]

  • [180 s, +inf]

-idletimeoutT1 T2 ... Amt
Les arguments indiquent le délai d’inactivité, en secondes. Les valeurs par défaut sont 5, 60, 180, 600 et 1800.

-idletheshold<t>
Les arguments indiquent le seuil d’inactivité, en secondes. Les périodes d’inactivité inférieures à ce seuil sont ignorées.

-spindownOverhead[t]
Si vous ne spécifiez pas d’argument, la valeur par défaut est 0.

À l’aide d’une séquence d’horodatages d’E/S de disque et d’un délai d’inactivité spécifié, vous pouvez calculer le moment où le disque serait mis hors service et la durée pendant laquelle il peut rester à l’état arrêté, comme illustré dans le tableau suivant.

Délai d’expiration, en secondes 5 60 180 600

Estimation du temps d’opportunité de spindown, en secondes

3 800

2000

1 000

500

Estimation du nombre d’opportunités de spindown

500

100

50

10

La première ligne affiche les valeurs de délai d’inactivité intéressantes pour l’estimation du temps d’arrêt. La deuxième ligne affiche le temps d’arrêt total estimé correspondant à chaque délai d’expiration. Dans cet exemple, un délai d’expiration de 5 secondes a donné le temps d’arrêt total de 3800 secondes. La troisième ligne indique le nombre estimé de fois où le disque est arrêté pour chaque valeur de délai d’expiration.

-spinupOverheadT
Si vous ne spécifiez pas d’argument, la valeur par défaut est 0 seconde.

-exc_fileFile1 File1 ... FileN
Les fichiers correspondant aux chemins d’accès complets fournis sont exclus. Vous devez spécifier le chemin d’accès complet pour chaque fichier que vous souhaitez exclure.

-exc_filestrString1 String2 ... StringN
Les fichiers contenant une ou plusieurs des chaînes fournies sont exclus.

-exc_filere<regx>
Les fichiers correspondant à l’expression régulière ATL fournie sont exclus. Par exemple, vous pouvez ignorer tous les fichiers se terminant par .dll en spécifiant l’expression « .*\.dll ».

Note Lorsque vous définissez une nouvelle ligne, vous devez inclure un caractère de retour. Au lieu d’utiliser \n, utilisez \r\n. En incluant les deux caractères (retour chariot = r ; saut de ligne = n), vous créez un terminateur de ligne. Cela est utile lors de la création d’un fichier de régions d’intérêt .

Notes

Il existe quelques fichiers système dont les E/S de disque sont en réponse à des E/S de disque à d’autres fichiers. Ces fichiers système incluent les éléments suivants :

  • $LogFiles

  • $Mft

  • $Bitmap

  • lastalive0.dat

  • lastalive1.dat

  • $UsnJrnl:$J

Il peut être difficile de différencier quelles E/S de disque et d’autres fichiers provoquent une E/S de disque particulière pour les fichiers système ci-dessus. Par conséquent, si vous souhaitez voir l’impact des fichiers que vous avez exclus, vous devez également exclure ces fichiers système. Étant donné que les E/S de disque de ces fichiers système sont en réponse à ou « piggyback » sur d’autres E/S de disque, le fait d’ignorer uniquement ces fichiers système eux-mêmes n’est pas censé modifier considérablement l’histogramme inactif du disque.

La sortie de cette action peut être importée dans une feuille de calcul à des fins de tri et d’analyse. Deux métriques supplémentaires sont fournies pour la sortie :

AvgIOInterval
Pour un fichier particulier, il s’agit de l’intervalle moyen entre deux E/S suivantes dans ce fichier. Cette métrique peut être trompeuse si un fichier a des intervalles d’E/S minuscules, tels que des intervalles inférieurs à 1 seconde. Même si ce fichier a également des intervalles d’E/S importants, tels que 30 minutes, l’intervalle d’E/S moyen peut sembler bien pire qu’un autre fichier avec des intervalles d’E/S courts moyens, tels que 10 minutes. Dans ce cas, vous pouvez utiliser -idlethreshold T pour supprimer des périodes d’inactivité inférieures à 1 seconde de l’analyse.

MaxIOInterval
Pour chaque fichier, il s’agit de l’intervalle maximal entre deux E/S suivantes à ce fichier. La sortie est triée en fonction de cette métrique par défaut. Un fichier avec un intervalle d’E/S important peut toujours avoir des E/S fréquentes en moyenne.

Note Utilisez ces métriques et ces histogrammes par fichier pour obtenir une image complète de l’activité des disques.

Évitez de perturber le ou les disques à l’étude en utilisant un autre disque physique (ou un périphérique tel qu’un lecteur flash USB) pour collecter la trace.

 Exemple

L’exemple suivant illustre une utilisation classique de cette action avec les paramètres par défaut

Xperf -i Trace.etl -a diskidlehistogram > output.csv

Collectez des informations sur les E/S de disque ainsi que des informations connexes, telles que registre/commutateur/stacks, au cas où une analyse plus approfondie est nécessaire. Compact_cswitch peut être utilisé pour réduire la taille du fichier de trace. L’exemple suivant montre un ensemble d’indicateurs Xperf recommandés.

xperf -on dispatcher+PROC_THREAD+LOADER+CSWITCH+COMPACT_CSWITCH +registry+DISK_IO+DISK_IO_INIT+FILEIO -stackwalk cswitch+readythread+DiskReadInit+DiskWriteInit+DiskFlushInit -buffersize 1024
sleep <desired trace time in seconds> or run scenario
xperf -d trace.etl

Xperf Actions