@* Disk speed per drive: IOPS, MB/s and average latency, optionally against the normal for the same hours. *@ @if (Disks.Count == 0) {

@Empty

} else { @foreach (var d in Disks) { var w = d.Window; }
DrevFilerLæs IOPSSkriv IOPS Læs MB/sSkriv MB/sGns. læsGns. skrivVurdering
@w.Volume @Files(w) @Display.Number(w.ReadIops ?? 0, 1) @Display.Number(w.WriteIops ?? 0, 1) @Display.Number(w.ReadMbPerSecond ?? 0, 1) @Display.Number(w.WriteMbPerSecond ?? 0, 1) @Ms(w.AverageReadMs)@Normal(d.Normal?.AverageReadMs) @Ms(w.AverageWriteMs)@Normal(d.Normal?.AverageWriteMs)
Hvad betyder det?

@SQLInsight.Reports.MetricAssessment.Explanation("disk.read")

@SQLInsight.Reports.MetricAssessment.Explanation("disk.write.log")

@SQLInsight.Reports.MetricAssessment.Explanation("disk.write")

Latens er gennemsnitstiden pr. læsning/skrivning set fra SQL Server (sys.dm_io_virtual_file_stats). Datafiler bør ligge under 10-20 ms, logfiler under 5 ms.@(ShowNormal ? " I parentes: det normale for samme klokkeslæt de foregående uger." : "")

} @code { [Parameter, EditorRequired] public IReadOnlyList Disks { get; set; } = []; [Parameter] public string Empty { get; set; } = "Ingen målinger pr. drev endnu."; [Parameter] public bool ShowNormal { get; set; } [Parameter] public string? InstanceName { get; set; } private static string Ms(double? value) => value is { } v ? $"{Display.Number(v, 1)} ms" : "–"; private string Normal(double? value) => ShowNormal && value is { } v ? $" ({Display.Number(v, 1)})" : ""; private static string Files(SQLInsight.Core.Data.DiskActivity d) => d.DataFiles + d.LogFiles == 0 ? "–" : $"{d.DataFiles} data · {d.LogFiles} log"; private static bool Worse(double? now, double? normal) => now is { } n && normal is > 0 and var m && n >= m * 2 && n - m >= 2; }