SQLIO 与 PerfCounter——值得信任哪一个?

SQLIO 与 PerfCounter——值得信任哪一个?

我周末使用 SQLIO(不是 SQLIOSim)进行了快速 SAN 性能测试。

前两个测试涉及将随机 64k 块写入 H:\ 和 K:\ 上的 1 GB 文件

以下是 SQLIO 的结果:

sqlio v1.5.SG 
using system counter for latency timings, -1794967296 counts per second 
1 thread writing for 60 secs to file H:\sqlio_test.dat
using 64KB random IOs
enabling multiple I/Os per thread with 1 outstanding
buffering set to not use file nor disk caches (as is SQL Server) 
using current size: 1000 MB for file: H:\sqlio_test.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   220.51
MBs/sec:    13.78
latency metrics: Min_Latency(ms): 2 Avg_Latency(ms): 4 Max_Latency(ms): 30
histogram: 
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+ 
%:  0  0  6  0 84  8  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

sqlio v1.5.SG
using system counter for latency timings, -1794967296 counts per second
1 thread writing for 60 secs to file K:\sqlio_test.dat
using 64KB random IOs
enabling multiple I/Os per thread with 1 outstanding
buffering set to not use file nor disk caches (as is SQL Server)
using current size: 1000 MB for file: K:\sqlio_test.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec:   331.81
MBs/sec:    20.73
latency metrics: Min_Latency(ms): 2 Avg_Latency(ms): 2 Max_Latency(ms): 107
histogram: 
ms: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+ 
%:  0  0 59 40  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

到目前为止一切顺利。但是,如果我查看这些驱动器(它们都是 Hitachi OpenV SAN 上的镜像“磁盘”)的性能计数器,我在 H: 上得到 39 MB/s,在 K: 上得到 55 MB/s。

我完全确信当时这些驱动器上除了 SQLIO 测试之外没有发生任何其他事情。所有其他 SQLIO 测试都显示出类似的模式。PerfCounters 的 I/O 大约比 SQLIO 结果高 2.5 倍。

但哪一个是正确的呢?

编辑:操作系统是 Win 2003 R2

答案1

尝试,看看哪一个最接近。

答案2

愚蠢的我!

正如我所说,磁盘是镜像的。因此从 SQLIO 的角度来看,它只是一个磁盘,但如果我将 perfcounters 加起来,我就会得到两个磁盘上的写入!

剩下的 1.3 因子只是对 perfcounter 图表的误解。我查看了最大值,没有考虑开始和结束斜率,这会降低平均值。这些斜率非常陡峭,所以我不得不放大到最大细节。如果测试运行超过一分钟(perfcounter 样本大小为 10 秒),效果会更好。

所以,两者都是正确的,我的信心又恢复了:-)

相关内容