diskidlehistogram

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

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

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

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

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

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

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

3800

2000

1000

500

估计的倒计时机会计数

500

100

50

10

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

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

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

String1 String2 ...StringN
不包含包含一个或多个提供的字符串的文件。

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

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

备注

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

  • $LogFiles

  • $Mft

  • $Bitmap

  • lastalive0.dat

  • lastalive1.dat

  • $UsnJrnl:$J

很难区分哪些磁盘 I/O 与其他文件导致上述系统文件出现特定磁盘 I/O。 因此,如果要查看已排除的文件的影响,还必须排除这些系统文件。 由于这些系统文件的磁盘 I/O 在其他磁盘 I/O 上是响应或"piggyback"的,因此只忽略这些系统文件本身不会显著更改磁盘空闲直方图。

此操作的输出可以导入电子表格,用于排序和分析。 为输出提供了另外两个指标:


对于特定文件,这是此文件的两个后续 I/O 之间的平均间隔。 如果文件的 I/O 间隔很小,例如间隔小于 1 秒,则此指标可能会产生误导。 即使此文件的 I/O 间隔较大(例如 30 分钟),平均 IO 间隔可能比具有中等短 I/O 间隔(例如 10 分钟)的另一个文件要差得多。 在这种情况下,可以使用 从分析中删除小于 -idlethreshold T 1 秒的空闲期。


对于每个文件,这是此文件的两个后续 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 操作

此操作将生成一个直方图,其中显示所有磁盘活动和空闲时间。

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

选项

n >
n 表示磁盘号 (基于0的磁盘索引) 。 默认值是为所有磁盘输出直方图。

B1 B2 .。。Bn
参数表示空闲长度的不同范围,以秒为单位。 默认 bucket 如下:

  • [0 秒,1 s]

  • [1 s,5 s]

  • [5 秒,60秒]

  • [60 s,180 s]

  • [180 s,600 s]

  • [600 s,900 s]

  • [900 s,1200 s]

  • [1200 s,1800 s]

  • [1800 s,+ inf]

"磁盘空闲" 直方图显示磁盘空闲时间和不同空闲时段长度范围内的空闲期间数,如下表中的示例值所示。