diskidlehistogram
Essa ação produz um histograma que exibe toda a atividade do disco e o tempo ocioso.
-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>]
Opções
-disknum<n>
n indica o número do disco (índice de disco baseado em 0). O valor padrão é gerar histogramas para todos os discos.
-bucketsB1 B2 ... Bn
Os argumentos indicam intervalos diferentes de comprimento ocioso, em segundos. Os buckets padrão são os seguintes:
[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]
Um histograma ocioso de disco exibe a distribuição do tempo ocioso do disco e o número de períodos ociosos em intervalos diferentes de comprimento de período ocioso, conforme ilustrado pelos valores de exemplo na tabela a seguir.
Menos de 1 segundo | 1 a 600 segundos | Mais de 600 segundos | |
---|---|---|---|
Tempo ocioso |
1000 |
1000 |
2000 |
Porcentagem do tempo ocioso total |
25 |
25 |
50 |
Contagem ociosa |
90 |
5 |
5 |
Porcentagem da contagem ociosa total |
90 |
5 |
5 |
A primeira linha mostra os buckets do histograma: intervalos diferentes de comprimento ocioso.
A segunda linha mostra o tempo ocioso acumulado para cada bucket. Por exemplo, o tempo ocioso acumulado para todos os períodos ociosos menor que 1 segundo é de 1000 segundos.
A terceira linha calcula o percentual de tempo ocioso para cada bucket dividindo o tempo ocioso de um bucket pelo tempo ocioso total.
A quarta linha é a contagem de períodos ociosos capturados para cada bucket. Neste exemplo, há 90 períodos ociosos com duração inferior a um segundo.
A última linha calcula a porcentagem de períodos ociosos para cada bucket dividindo o número de períodos ociosos para um bucket pelo número total de períodos ociosos.
O comando a seguir produziria os buckets na seguinte lista: -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
Os argumentos indicam o tempo limite ocioso, em segundos. Os valores padrão são 5, 60, 180, 600 e 1800.
-idletheshold<t>
Os argumentos indicam o limite ocioso, em segundos. Períodos ociosos menores que esse limite são ignorados.
-spindownOverhead[t]
Se você não especificar um argumento, o valor padrão será 0.
Usando uma sequência de carimbos de data/hora de E/S de disco e um tempo limite ocioso especificado, você pode calcular quando o disco seria girado e quanto tempo ele pode permanecer no estado de desativação, conforme ilustrado na tabela a seguir.
Tempo limite, em segundos | 5 | 60 | 180 | 600 |
---|---|---|---|---|
Tempo estimado de oportunidade de spindown, em segundos |
3800 |
2000 |
1000 |
500 |
Contagem estimada de oportunidades de spindown |
500 |
100 |
50 |
10 |
A primeira linha mostra os valores de tempo limite ocioso de interesse para estimar o tempo de inatividade. A segunda linha mostra o tempo total estimado de inatividade correspondente a cada tempo limite. Neste exemplo, um tempo limite de 5 segundos rendeu o tempo total de inatividade de 3800 segundos. A terceira linha mostra o número estimado de vezes que o disco é girado para baixo para cada valor de tempo limite.
-spinupOverheadT
Se você não especificar um argumento, o valor padrão será 0 segundos.
-exc_fileFile1 File1 ... FileN
Os arquivos que correspondem aos caminhos de arquivo completos fornecidos são excluídos. Você deve especificar o caminho completo do arquivo para cada arquivo que deseja excluir.
-exc_filestrString1 String2 ... StringN
Arquivos que contêm uma ou mais das cadeias de caracteres fornecidas são excluídos.
-exc_filere<regx>
Os arquivos que correspondem à expressão regular da ATL fornecida são excluídos. Por exemplo, você pode ignorar todos os arquivos que terminam com .dll especificando a expressão ".*\.dll".
Nota Ao definir uma nova linha, você deve incluir um caractere de retorno. Em vez de usar \n, use \r\n. Ao incluir ambos os caracteres (retorno de carro = r; alimentação de linha = n), você cria um terminador de linha. Isso é útil ao criar um arquivo de regiões de interesse .
Comentários
Há alguns arquivos do sistema cujas E/Ss de disco estão em resposta a E/Ss de disco para outros arquivos. Esses arquivos do sistema incluem o seguinte:
$LogFiles
$Mft
$Bitmap
lastalive0.dat
lastalive1.dat
$UsnJrnl:$J
Pode ser difícil diferenciar quais E/Ss de disco para outros arquivos causam uma E/S de disco específica para os arquivos do sistema acima. Consequentemente, se você quiser ver o impacto dos arquivos excluídos, também deverá excluir esses arquivos do sistema. Como as E/Ss de disco desses arquivos do sistema são em resposta ou "piggyback" em outras E/Ss de disco, não se espera que apenas esses arquivos do sistema alterem significativamente o histograma ocioso do disco.
A saída dessa ação pode ser importada para uma planilha para classificação e análise. Duas métricas adicionais são fornecidas para a saída:
AvgIOInterval
Para um arquivo específico, esse é o intervalo médio entre duas E/Ss subsequentes a esse arquivo. Essa métrica poderá ser enganosa se um arquivo tiver intervalos de E/S minúsculos, como intervalos de menos de 1 segundo. Mesmo que esse arquivo também tenha intervalos de E/S grandes, como 30 minutos, o intervalo médio de E/S pode parecer muito pior do que outro arquivo com intervalos médios curtos de E/S, como 10 minutos. Nesse caso, você pode usar -idlethreshold T
para remover períodos ociosos de menos de 1 segundo da análise.
MaxIOInterval
Para cada arquivo, esse é o intervalo máximo entre duas E/Ss subsequentes a esse arquivo. A saída é classificada com base nessa métrica por padrão. Um arquivo com um intervalo de E/S grande ainda pode ter E/Ss frequentes em média.
Nota Use essas métricas e histogramas por arquivo para uma visão abrangente da atividade de disco.
Evite perturbar os discos em estudo usando um disco físico diferente (ou dispositivo, como uma unidade flash USB) para coletar o rastreamento.
Exemplo
O exemplo a seguir mostra um uso típico dessa ação com parâmetros padrão
Xperf -i Trace.etl -a diskidlehistogram > output.csv
Colete informações sobre E/Ss de disco, bem como informações relacionadas, como registry/cswitch/stacks, caso seja necessária uma análise mais profunda.
Compact_cswitch
pode ser usado para reduzir o tamanho do arquivo de rastreamento. O exemplo a seguir mostra um conjunto de sinalizadores Xperf recomendados.
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