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 ...Bn
参数指示空闲长度的不同范围(以秒表示)。 默认存储桶如下所示:

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

磁盘空闲直方图显示磁盘空闲时间的分布以及不同空闲时段长度范围的空闲时段数,如下表的示例值所示。

小于 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 s]

  • [1 s, 5 s]

  • [5 s, 60 s]

  • [60 s, 180 s]

  • [180 s, +inf]

-idletimeoutT1 T2 ...Tn
参数指示空闲超时(以秒表示)。 默认值为 5、60、180、600 和 1800。

-idletheshold < t >
参数指示空闲阈值(以秒表示)。 将忽略短于此阈值的空闲期。

-spindownOverhead [ t ]
如果未指定参数,则默认值为 0。

使用一系列磁盘 I/O 时间戳和指定的空闲超时,可以计算磁盘何时关闭以及磁盘可保持关闭状态的时间,如下表所示。

超时(以秒表示) 5 60 180 600

估计的旋转机会时间(以秒计)

3800

2000

1000

500

估计的倒计时机会计数

500

100

50

10

第一行显示估计关闭时间时感兴趣的空闲超时值。 第二行显示对应于每个超时的预计总下拉时间。 此示例中,超时为 5 秒时,总下发时间为 3800 秒。 第三行显示每个超时值的磁盘关闭估计次数。

-spinupOverheadT
如果未指定参数,则默认值为 0 秒。

-exc _ fileFile1 File1 ...FileN
排除与提供的完整文件路径匹配的文件。 必须指定要排除的每个文件的完整文件路径。

-exc _ filestrString1 String2 ...StringN
不包含包含一个或多个提供的字符串的文件。

-exc _ filere < regx >
排除与提供的 ATL 正则表达式匹配的文件。 例如,可以通过指定表达式"来忽略以 .dll 结尾的所有文件。 * \.dll"。

注意 定义新行时,必须包含返回字符。 使用 \ r n ,而不是 \ \ 使用 n。 在回车符 = r 中 (字符;换行符 = n) ,请创建行终止符。 在创建感兴趣的区域文件时 ,这非常有用

注解

有几个系统文件,其磁盘 I/O 响应磁盘 I/O 到其他文件。 这些系统文件包括:

  • $LogFiles

  • $Mft

  • $Bitmap

  • lastalive0

  • lastalive1

  • $UsnJrnl: $J

可能很难将其他文件的磁盘 i/o 与其他文件的特定磁盘 i/o 区分开来。 因此,如果想要查看已排除的文件的影响,还必须排除这些系统文件。 由于这些系统文件的磁盘 i/o 是在其他磁盘 i/o 上响应或 "被携带" 的,因此忽略这些系统文件本身并不会显著更改磁盘空闲直方图。

此操作的输出可以导入到电子表格中进行排序和分析。 为输出提供了两个额外的指标:

AvgIOInterval
对于特定文件,这是此文件的两个后续 i/o 之间的平均时间间隔。 如果文件具有较小的 i/o 间隔(如小于1秒的间隔),则此指标可能会产生误导。 即使此文件也有较大的 i/o 间隔(如30分钟),平均 IO 时间间隔也可能比具有中等短 i/o 间隔(如10分钟)的另一个文件更糟。 在这种情况下,可以使用 -idlethreshold T 从分析中删除不到1秒的空闲时间段。

MaxIOInterval
对于每个文件,这是此文件的两个后续 i/o 之间的最大时间间隔。 默认情况下,输出根据此指标进行排序。 具有较大 i/o 间隔的文件的平均 i/o 时间可能仍为频繁。

注意
使用这两个度量值和每个文件的直方图来全面了解磁盘活动。

通过使用不同的物理磁盘 (或设备(例如 USB 闪存驱动器) 来收集跟踪),避免 perturbing 磁盘 (s) 。

示例

下面的示例演示了此操作与默认参数的典型用法

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

收集有关磁盘 i/o 的信息以及相关信息,例如 registry/cswitch/stack,以防需要更深入的分析。 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

Xperf 操作