diskidlehistogram
Это действие создает гистограмму, которая отображает все действия диска и время простоя.
-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>]
Варианты
-disknum<n>
n указывает номер диска (индекс диска на основе 0). Значение по умолчанию — вывод гистограмм для всех дисков.
-bucketsB1 B2 ... Млрд
Аргументы указывают разные диапазоны продолжительности простоя в секундах. По умолчанию используются следующие контейнеры:
[0 с, 1 с]
[1 с, 5 с]
[5 с, 60 с]
[60 с, 180 с]
[180 с, 600 с]
[600 с, 900 с]
[900 с, 1200 с]
[1200 с, 1800 с]
[1800 с, +inf]
Гистограмма простоя диска показывает распределение времени простоя диска и количество периодов простоя в разных диапазонах периода простоя, как показано в примерах значений в следующей таблице.
Менее 1 секунды | 1–600 секунд | Более 600 секунд | |
---|---|---|---|
Время простоя |
1000 |
1000 |
2000 |
Процент от общего времени простоя |
25 |
25 |
50 |
Количество бездействия |
90 |
5 |
5 |
Процент от общего количества простоя |
90 |
5 |
5 |
В первой строке показаны контейнеры гистограммы: разные диапазоны длины бездействия.
Во второй строке отображается накопленный период простоя для каждого контейнера. Например, накопленный период простоя для всех периодов простоя короче 1 секунды составляет 1000 секунд.
В третьей строке вычисляется процент времени простоя для каждого контейнера путем деления времени простоя для контейнера на общее время простоя.
Четвертая строка — это количество периодов простоя, зафиксированных для каждого контейнера. В этом примере имеется 90 периодов простоя, длительностью менее одной секунды.
Последняя строка вычисляет процент периодов простоя для каждого контейнера путем деления количества периодов простоя для контейнера на общее число периодов простоя.
Следующая команда создаст сегменты в следующем списке: -buckets 1s 5s 60s 180s:
[0, 1 с]
[1 с, 5 с]
[5 с, 60 с]
[60 с, 180 с]
[180 с, +inf]
-idletimeoutT1 T2 ... Tn
Аргументы указывают время ожидания простоя в секундах. Значения по умолчанию: 5, 60, 180, 600 и 1800.
-idlethetheshold<t>
Аргументы указывают порог простоя в секундах. Периоды простоя, которые короче этого порогового значения, игнорируются.
-spindownOverhead[t]
Если аргумент не указан, по умолчанию используется значение 0.
Используя последовательность меток времени ввода-вывода на диске и указанное время ожидания простоя, можно вычислить, когда диск будет отключен и сколько времени он может оставаться в состоянии скрученного доступа, как показано в следующей таблице.
Время ожидания в секундах | 5 | 60 | 180 | 600 |
---|---|---|---|---|
Предполагаемое время возможности спин-дауна в секундах |
3800 |
2000 |
1000 |
500 |
Предполагаемое число возможностей спиндауна |
500 |
100 |
50 |
10 |
В первой строке отображаются значения времени ожидания простоя, представляющие интерес для оценки времени простоя. Во второй строке отображается предполагаемое общее время простоя, соответствующее каждому тайм-ауту. В этом примере время ожидания в 5 секунд дает общее время простоя в 3800 секунд. В третьей строке показано предполагаемое количество раз, когда диск закрутился для каждого значения времени ожидания.
-spinupOverheadT
Если аргумент не указан, значение по умолчанию — 0 секунд.
-exc_fileФайл1 Файл1 ... FileN
Файлы, соответствующие предоставленным полным путям к файлам, исключаются. Необходимо указать полный путь к каждому файлу, который требуется исключить.
-exc_filestrString1 String2 ... StringN
Файлы, содержащие одну или несколько предоставленных строк, исключаются.
-exc_filere<regx>
Файлы, соответствующие предоставленному регулярному выражению ATL, исключаются. Например, можно игнорировать все файлы, заканчивающиеся .dll, указав выражение "*\.dll".
Примечание При определении новой строки необходимо включить символ возврата. Вместо использования\nиспользуйте \r\n. Включив оба символа (возврат каретки = r; канал строки = n), вы создадите признак конца строки. Это полезно при создании файла интересующих регионов .
Комментарии
Существует несколько системных файлов, дисковые операции ввода-вывода которых выполняются в ответ на дисковые операции ввода-вывода в другие файлы. К этим системным файлам относятся:
$LogFiles
$Mft
$Bitmap
lastalive0.dat
lastalive1.dat
$UsnJrnl:$J
Может быть трудно различить, какие дисковые операции ввода-вывода в других файлах приводят к определенному дисковому вводу-выводу в указанные выше системные файлы. Следовательно, если вы хотите увидеть влияние исключенных файлов, необходимо также исключить эти системные файлы. Так как дисковые операции ввода-вывода этих системных файлов выполняются в ответ на другие операции ввода-вывода, игнорирование только этих системных файлов не должно существенно изменить гистограмму бездействия диска.
Выходные данные этого действия можно импортировать в электронную таблицу для сортировки и анализа. Для выходных данных предоставляются две дополнительные метрики:
AvgIOInterval
Для определенного файла это средний интервал между двумя последующими ввода-выводами к этому файлу. Эта метрика может вводить в заблуждение, если файл имеет небольшие интервалы ввода-вывода, например интервалы менее 1 секунды. Даже если этот файл имеет большие интервалы ввода-вывода, например 30 минут, средний интервал ввода-вывода может выглядеть гораздо хуже, чем другой файл со средними короткими интервалами ввода-вывода, например 10 минут. В этом случае можно использовать для -idlethreshold T
удаления периодов простоя менее 1 секунды из анализа.
MaxIOInterval
Для каждого файла это максимальный интервал между двумя последующими ввода-выводами к этому файлу. Выходные данные по умолчанию сортируются на основе этой метрики. Файл с одним большим интервалом ввода-вывода по-прежнему может иметь частые ввода-вывода в среднем.
Примечание Используйте обе эти метрики и гистограммы для каждого файла для получения полной картины активности диска.
Избегайте возмущения изучаемых дисков с помощью другого физического диска (или устройства, например USB-устройства флэш-памяти) для сбора данных трассировки.
Пример
В следующем примере показано типичное использование этого действия с параметрами по умолчанию
Xperf -i Trace.etl -a diskidlehistogram > output.csv
Сбор сведений о дисковых ввода-выводах, а также связанных сведений, таких как реестр,cswitch/stacks, на случай, если требуется более глубокий анализ.
Compact_cswitch
можно использовать для уменьшения размера файла трассировки. В следующем примере показан набор рекомендуемых флагов Xperf.
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