Condividi tramite


diskidlehistogram

Questa azione genera un istogramma che visualizza tutte le attività del disco e il tempo di inattività.

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

Opzioni

-disknum<n>
n indica il numero di disco (indice disco basato su 0). Il valore predefinito consiste nell'output degli istogrammi per tutti i dischi.

-bucketB1 B2 ... Mld
Gli argomenti indicano intervalli diversi di lunghezza inattiva, in secondi. I bucket predefiniti sono i seguenti:

  • [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 istogramma inattiva del disco visualizza la distribuzione del tempo di inattività del disco e il numero di periodi inattive su intervalli diversi di lunghezza del periodo di inattività, come illustrato dai valori di esempio nella tabella seguente.

Minore di 1 secondo 1-600 secondi Più di 600 secondi

Tempo di inattività

1000

1000

2000

Percentuale di tempo di inattività totale

25

25

50

Conteggio inattive

90

5

5

Percentuale del numero totale di inattività

90

5

5

La prima riga mostra i bucket dell'istogramma: intervalli diversi di lunghezza inattiva.

La seconda riga mostra il tempo di inattività accumulato per ogni bucket. Ad esempio, il tempo di inattività accumulato per tutti i periodi di inattività più brevi di 1 secondo è 1000 secondi.

La terza riga calcola la percentuale di tempo di inattività per ogni bucket suddividendo il tempo di inattività per un bucket in base al tempo totale di inattività.

La quarta riga è il numero di periodi inattive acquisiti per ogni bucket. In questo esempio sono presenti 90 periodi di inattività inferiori a un secondo.

L'ultima riga calcola la percentuale di periodi di inattività per ogni bucket suddividendo il numero di periodi inattivi per un bucket in base al numero totale di periodi di inattività.

Il comando seguente produce i bucket nell'elenco seguente: -bucket 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
Gli argomenti indicano il timeout inattiva, in secondi. I valori predefiniti sono 5, 60, 180, 600 e 1800.

-idletheshold<t>
Gli argomenti indicano la soglia inattiva, in secondi. I periodi di inattività più brevi di questa soglia vengono ignorati.

-spindownOverhead[t]
Se non si specifica un argomento, il valore predefinito è 0.

Usando una sequenza di timestamp di I/O del disco e un timeout di inattività specificato, è possibile calcolare quando il disco verrà eseguito ilpun down e quanto tempo può rimanere in stato di inattività, come illustrato nella tabella seguente.

Timeout, in secondi 5 60 180 600

Tempo di opportunità di spindown stimato, in secondi

3800

2000

1000

500

Conteggio delle opportunità di spindown stimato

500

100

50

10

La prima riga mostra i valori di timeout inattivo di interesse per la stima del tempo di spostamento. La seconda riga mostra il tempo totale di spostamento stimato corrispondente a ogni timeout. In questo esempio, un timeout di 5 secondi ha restituito il tempo totale di 3800 secondi. La terza riga mostra il numero stimato di volte in cui il disco è inattivo per ogni valore di timeout.

-spinupOverheadT
Se non si specifica un argomento, il valore predefinito è 0 secondi.

-exc_fileFile1 File1 ... FileN
I file corrispondenti ai percorsi di file completi specificati sono esclusi. È necessario specificare il percorso completo del file per ogni file da escludere.

-exc_filestrString1 String2 ... StringaN
I file contenenti una o più stringhe specificate sono esclusi.

-exc_filere<regx>
I file corrispondenti all'espressione regolare ATL specificata sono esclusi. Ad esempio, è possibile ignorare tutti i file che terminano con .dll specificando l'espressione ".*\.dll".

Nota Quando si definisce una nuova riga, è necessario includere un carattere restituito. Anziché usare \n, usare \r\n. Includendo entrambi i caratteri (ritorno a capo = r; feed di riga = n), si crea un terminatore di riga. Ciò è utile quando si crea un file di interesse in aree.

Commenti

Ci sono alcuni file di sistema i cui dischi I/Os sono in risposta al disco I/Os ad altri file. Questi file di sistema includono quanto segue:

  • $LogFiles

  • $Mft

  • $Bitmap

  • lastalive0.dat

  • lastalive1.dat

  • $UsnJrnl:$J

Può essere difficile distinguere i file di I/O da disco ad altri file che causano un particolare I/O su disco nei file di sistema precedenti. Di conseguenza, se si desidera visualizzare l'impatto dei file esclusi, è necessario escludere anche questi file di sistema. Poiché le operazioni di I/O del disco dei file di sistema sono in risposta o "piggyback" su altri dischi di I/O, ignorando solo questi file di sistema stessi non è previsto modificare significativamente l'istogramma di inattività del disco.

L'output di questa azione può essere importato in un foglio di calcolo per l'ordinamento e l'analisi. Per l'output vengono fornite due metriche aggiuntive:

AvgIOInterval
Per un particolare file, questo è l'intervallo medio tra due operazioni di I/O successive a questo file. Questa metrica può essere fuorviante se un file ha intervalli di I/O di dimensioni ridotte, ad esempio intervalli inferiori a 1 secondo. Anche se questo file ha intervalli di I/O di grandi dimensioni, ad esempio 30 minuti, l'intervallo di I/O medio potrebbe risultare molto peggiore rispetto a un altro file con intervalli di I/O medio brevi, ad esempio 10 minuti. In questo caso, è possibile usare -idlethreshold T per rimuovere i periodi di inattività inferiori a 1 secondo dall'analisi.

MaxIOInterval
Per ogni file, questo è l'intervallo massimo tra due operazioni di I/O successive a questo file. L'output viene ordinato in base a questa metrica per impostazione predefinita. Un file con un intervallo di I/O di grandi dimensioni può comunque avere una frequenza media di I/O frequente.

Nota Usare entrambe queste metriche e istogrammi per ogni file per un'immagine completa dell'attività del disco.

Evitare di perturbare i dischi sottoposti a studio usando un disco fisico diverso (o dispositivo, ad esempio un'unità flash USB) per raccogliere la traccia.

Esempio

Nell'esempio seguente viene illustrato un uso tipico di questa azione con parametri predefiniti

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

Raccogliere informazioni su I/O su disco e informazioni correlate, ad esempio registro/cswitch/stacks, nel caso in cui sia necessaria un'analisi più approfondita. Compact_cswitch può essere usato per ridurre le dimensioni del file di traccia. L'esempio seguente mostra un set di flag Xperf consigliati.

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

Azioni xperf