Freigeben über


diskidlehistogram

Diese Aktion erzeugt ein Histogramm, das alle Datenträgeraktivität und Leerlaufzeit anzeigt.

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

Optionen

-disknum<n>
n gibt die Datenträgernummer (0-basierte Datenträgerindex) an. Der Standardwert besteht darin, Histogramme für alle Datenträger auszugeben.

-bucketsB1 B2 … Bn
Argumente geben unterschiedliche Bereiche der Leerlauflänge in Sekunden an. Standard-Buckets sind wie folgt:

  • %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]

Ein Datenträger-Idle-Histogramm zeigt die Verteilung der Leerlaufzeit des Datenträgers und die Anzahl der Leerlaufzeiten über verschiedene Bereiche der Länge des Leerlaufzeitraums an, wie in den Beispielwerten in der folgenden Tabelle veranschaulicht.

Weniger als 1 Sekunde 1-600 Sekunden Mehr als 600 Sekunden

Leerlaufzeit

1000

1000

2000

Prozent der Gesamtlaufzeit

25

25

50

Leerlaufanzahl

90

5

5

Prozent der Gesamtanzahl des Leerlaufs

90

5

5

Die erste Zeile zeigt die Buckets des Histogramms: verschiedene Bereiche der Leerlauflänge.

In der zweiten Zeile wird die akkumulierte Leerlaufzeit für jeden Bucket angezeigt. Beispielsweise beträgt die akkumulierte Leerlaufzeit für alle Leerlaufzeiten, die kürzer als 1 Sekunde sind, 1000 Sekunden.

In der dritten Zeile wird der Prozentsatz der Leerlaufzeit für jeden Bucket berechnet, indem die Leerlaufzeit für einen Bucket durch die Gesamtlaufzeit geteilt wird.

Die vierte Zeile ist die Anzahl der Leerlaufperioden, die für jeden Bucket erfasst werden. In diesem Beispiel gibt es 90 Leerlaufzeiten, die weniger als eine Sekunde dauern.

In der letzten Zeile wird der Prozentsatz der Leerlaufperioden für jeden Bucket berechnet, indem die Anzahl der Leerlaufzeiten für einen Bucket durch die Gesamtzahl der Leerlaufzeiten dividiert wird.

Der folgende Befehl würde die Buckets in der folgenden Liste erzeugen: -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 … Tn
Argumente geben das Leerlauftimeout in Sekunden an. Die Standardwerte sind 5, 60, 180, 600 und 1800.

-idletheshold<t>
Argumente geben den Leerlaufschwellenwert in Sekunden an. Leerlaufperioden, die kürzer als dieser Schwellenwert sind, werden ignoriert.

-spindownOverhead[t]
Wenn Sie kein Argument angeben, ist der Standardwert 0.

Mit einer Sequenz von E/A-Zeitstempeln des Datenträgers und einem angegebenen Leerlauftimeout können Sie berechnen, wann der Datenträger nach unten gedreht wird und wie viel Zeit er in spun-down-Zustand bleiben kann, wie in der folgenden Tabelle dargestellt.

Timeout (in Sekunden) 5 60 180 600

Geschätzte Spindownchancezeit in Sekunden

3800

2000

1000

500

Geschätzte Spindownchancenanzahl

500

100

50

10

In der ersten Zeile werden die Zeitüberschreitungswerte des Leerlaufs angezeigt, um die Spun down-Zeit zu schätzen. In der zweiten Zeile wird die geschätzte Gesamtzeit angezeigt, die jeder Timeout entspricht. In diesem Beispiel hat ein Timeout von 5 Sekunden die Gesamtzeit von 3800 Sekunden erzielt. In der dritten Zeile wird die geschätzte Anzahl der Zeiten angezeigt, in denen der Datenträger für jeden Timeoutwert nach unten gedreht wird.

-spinupOverheadT
Wenn Sie kein Argument angeben, beträgt der Standardwert 0 Sekunden.

-exc_fileFile1 File1 … FileN
Dateien, die den bereitgestellten vollständigen Dateipfaden entsprechen, werden ausgeschlossen. Sie müssen den vollständigen Dateipfad für jede Datei angeben, die Sie ausschließen möchten.

-exc_filestrString1 String2 … StringN
Dateien, die mindestens eine der bereitgestellten Zeichenfolgen enthalten, werden ausgeschlossen.

-exc_filere<regx>
Dateien, die dem bereitgestellten ATL-regulären Ausdruck entsprechen, werden ausgeschlossen. Sie können beispielsweise alle Dateien ignorieren, die mit .dll enden, indem Sie den Ausdruck ".*\.dll" angeben.

Hinweis Wenn Sie eine neue Zeile definieren, müssen Sie ein Rückgabezeichen einschließen. Anstatt \nzu verwenden, verwenden Sie \r\n. Indem Sie beide Zeichen einschließen (Wagenrücklauf = r; Zeilenfeed = n), erstellen Sie einen Zeilenterminator. Dies ist hilfreich beim Erstellen einer Interessendatei .

Bemerkungen

Es gibt einige Systemdateien, deren Datenträger-I/Os als Reaktion auf Datenträger-I/Os für andere Dateien verwendet wird. Diese Systemdateien umfassen Folgendes:

  • logFiles

  • $Mft

  • Bitmap

  • lastalive0.dat

  • lastalive1.dat

  • $UsnJrnl:$J

Es kann schwierig sein, zu unterscheiden, welche Datenträger-I/Os zu anderen Dateien führen, zu einer bestimmten Datenträger-I/O-Datei in den obigen Systemdateien. Wenn Sie daher die Auswirkungen der von Ihnen ausgeschlossenen Dateien sehen möchten, müssen Sie diese Systemdateien auch ausschließen. Da die Datenträger-I/Os dieser Systemdateien als Reaktion auf oder "Piggyback" auf anderen Datenträgern I/Os angezeigt werden, wird nur diese Systemdateien selbst nicht erwartet, dass das Idle-Histogramm des Datenträgers erheblich geändert wird.

Die Ausgabe aus dieser Aktion kann in eine Kalkulationstabelle für die Sortierung und Analyse importiert werden. Zwei zusätzliche Metriken werden für die Ausgabe bereitgestellt:

AvgIOInterval
Für eine bestimmte Datei ist dies das durchschnittliche Intervall zwischen zwei nachfolgenden I/Os zu dieser Datei. Diese Metrik kann irreführend sein, wenn eine Datei kleine I/O-Intervalle aufweist, z. B. Intervalle von weniger als 1 Sekunde. Selbst wenn diese Datei auch große I/O-Intervalle hat, z. B. 30 Minuten, kann das durchschnittliche IO-Intervall viel schlechter aussehen als eine andere Datei mit mittleren kurzen I/O-Intervallen, z. B. 10 Minuten. In diesem Fall können -idlethreshold T Sie Leerlaufzeiten von weniger als 1 Sekunde aus der Analyse entfernen.

MaxIOInterval
Für jede Datei ist dies das maximale Intervall zwischen zwei nachfolgenden I/Os zu dieser Datei. Die Ausgabe wird standardmäßig basierend auf dieser Metrik sortiert. Eine Datei mit einem großen I/O-Intervall kann im Durchschnitt immer noch häufig I/Os aufweisen.

Hinweis Verwenden Sie beide Metriken und Pro-Datei-Histogramme für ein umfassendes Bild der Datenträgeraktivität.

Vermeiden Sie es, die datenträger(n) zu untersuchen, indem Sie einen anderen physischen Datenträger (oder ein GERÄT wie ein USB-Flashlaufwerk) verwenden, um die Ablaufverfolgung zu erfassen.

Beispiel

Im folgenden Beispiel wird eine typische Verwendung dieser Aktion mit Standardparametern gezeigt.

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

Sammeln Sie Informationen auf Datenträger-I/Os sowie verwandte Informationen, z. B. Registrierungs-/cswitch/Stacks, falls eine tiefere Analyse erforderlich ist. Compact_cswitch kann verwendet werden, um die Größe der Ablaufverfolgungsdatei zu verringern. Im folgenden Beispiel wird eine Reihe empfohlener Xperf-Flags gezeigt.

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