docs: explain idle time rates above 1 for logical_disk and physical_disk (#2770)

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
Jan-Otto Kröpke
2026-10-16 21:33:09 +02:00
committed by GitHub
co-authored by Claude
parent 4ab9d475e1
commit f6e8e67a00
4 changed files with 35 additions and 1 deletions
@@ -33,6 +33,13 @@ multi-instance. These notes were recorded on a Windows Server 2025
rate(windows_logical_disk_reads_total[5m])`.
- `% Idle Time` is a cumulative 100 ns timer as well, not a percentage.
On `C:` it was 115960642 ticks, about 11.6 seconds.
- The second raw value of `% Idle Time` is the sample time as a UTC FILETIME;
PDH divides by its delta. Even with that divisor the idle delta of a busy
volume exceeded the elapsed time by up to 16% on `C:` of a Windows 11 NVMe
disk (43% on its `PhysicalDisk` instance) after a 1.6 GB write ended, while idle
disks stayed at 1.000 and `Processor Information` idle time never exceeded 1.
The accumulator lags while busy and catches up later (#1249). The collector
exports the raw counter; queries clamp the rate with `clamp_max(..., 1)`.
- `Disk Read Bytes/sec` and `Disk Write Bytes/sec` (`PERF_COUNTER_BULK_COUNT`)
and the `PERF_COUNTER_COUNTER` rates are cumulative counts since boot.
- `Current Disk Queue Length` is an instantaneous snapshot (gauge) and was 0.
@@ -19,6 +19,13 @@ multi-instance. These notes were recorded on a Windows Server 2025
(`% Disk Read Time`, `% Disk Write Time`, `% Idle Time`) to seconds.
`PERF_AVERAGE_TIMER` values arrive in ticks of the 10 MHz counter time base
and need the 1e-7 factor.
- The second raw value of `% Idle Time` is the sample time as a UTC FILETIME;
PDH divides by its delta. Even with that divisor the idle delta of a busy
disk exceeded the elapsed time by up to 43% between 1 s samples on a
Windows 11 NVMe disk (the cooked value of one sample reached 150%) after a 1.6 GB write ended, while idle
disks stayed at 1.000 and `Processor Information` idle time never exceeded 1.
The accumulator lags while busy and catches up later (#1249). The collector
exports the raw counter; queries clamp the rate with `clamp_max(..., 1)`.
- The `PERF_AVERAGE_TIMER` base is the operation count: it equals
`Disk Reads/sec` (781613), `Disk Writes/sec` (940802) and their sum
(1722415).