目前,我们正在研究作为SQL服务器运行的Windows Server 2012 R2上的高磁盘延迟。 它是VMware下的一个虚拟机,故障磁盘的数据存储与SAN上性能极高的LUN相链接。
即使在事件和testing期间,SAN对LUN的响应时间也非常好。 数据存储在每个时刻都显示出非常好的响应时间。 CPU和内存不是瓶颈,我已经加倍检查。
微软build议我们使用diskspd来testing我们的磁盘性能。 这是2套testing的结果。 我跑了他们一段时间,更长的时间间隔,在不同的时间,所以我相信结果不是偶然的。
命令行:diskspd -b64k -o32 -t4 -d60 -w50 -Sw -r -L -c20G -Z1G C:\ iotest.data
总IO线程| 字节| I / O | MB / s | I / O每秒| AvgLat | LatStdDev | 文件
12623020032 | 192612 | 200.59 | 3209.46 | 38.636 | 21.687
命令行:diskspd -b64k -o32 -t4 -d60 -w50 -Su -r -L -c20G -Z1G C:\ iotest.data
总IO线程| 字节| I / O | MB / s | I / O每秒| AvgLat | LatStdDev | 文件
78517239808 | 1198078 | 1247.71 | 19963.34 | 6.410 | 8.202
根据有关diskspd -Sw禁用写入IO的文档和-Su禁用软件caching。 让我指定有或没有-SW,在第一个命令行,结果是一样的让我知道这个标志没有太大的影响。 从这个工具(由Windows团队创build和pipe理),我们可以得出结论caching(禁用-Su)破坏磁盘性能,但这似乎不正确。
我的问题是:
为什么软件caching会降低性能?
它是否会影响正在运行的应用程序?
IOMeter为我提供了与没有软件caching的testing相同的性能,为什么?
谢谢,
你正在改变两个variables,缓冲和写入,所以你不能说出什么改变。 -Sb “缓冲”和“非缓冲”之间的比较将更好。
事实上,-Sw很可能会杀死你的performance。 任何值得称为的存储arrays都有写入caching,因此可以比写入arrays中的磁盘更快地确认写入。 通过写可以绕过。
保持检查arrays上的所有可用组件,SAN和主机,软件和硬件。
你误解了-Sw所做的。
正如diskspd 文档所述 , -Sw实际上绕过了 OS写caching,因为它使用FILE_FLAG_WRITE_THROUGH打开目标文件。
让我感到惊讶的是,您的SAN根本无法实现这个标志:拥有powerloss保护的写入caching,SAN和存储arrays通常不会遵守写入标记。
另一方面,无缓冲和非通过testing显示出更多改进的结果。
也许这是你的真正的问题:你的SAN正在履行(可能无用,它肯定有一个持久的caching)写通过标志。