我一直在预生产集群(Dell R710 通过 2 个千兆以太网连接连接到专用 RAID10 SAN)的专用 DB SAN 上运行一系列负载测试,但我不确定我是否正确解释了数据。
作为参考,这是原始数据。
测试 1
sqlio v1.5.SG
using system counter for latency timings, 2727587 counts per second
parameter file used: paramD100.txt
file d:\tmp\testfile.dat with 2 threads (0-1) using mask 0x0 (0)
2 threads reading for 120 secs from file d:\tmp\testfile.dat
using 64KB random IOs
enabling multiple I/Os per thread with 2 outstanding
buffering set to use hardware disk cache (but not file cache)
using specified size: 20480 MB for file: d:\tmp\testfile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 372.12
MBs/sec: 23.25
latency metrics:
Min_Latency(ms): 1
Avg_Latency(ms): 10
Max_Latency(ms): 159
测试 2
sqlio v1.5.SG
using system counter for latency timings, 2727587 counts per second
parameter file used: paramD100.txt
file d:\tmp\testfile.dat with 2 threads (0-1) using mask 0x0 (0)
2 threads reading for 120 secs from file d:\tmp\testfile.dat
using 64KB random IOs
enabling multiple I/Os per thread with 2 outstanding
buffering set to use hardware disk cache (but not file cache)
using specified size: 20480 MB for file: d:\tmp\testfile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 358.26
MBs/sec: 22.39
latency metrics:
Min_Latency(ms): 1
Avg_Latency(ms): 10
Max_Latency(ms): 169
为了减少测试结果之间的差异,这些测试在连续两天的上午 11:30 进行。
鉴于这种负载模式,我是否应该预期获得的 MBPS 吞吐量会尽可能低,或者我是否正确解释了这一点并认为网络或 SAN(或全部)存在问题?
谢谢。
更新 #1
具体来说,设置如下。
生产数据库集群
Dell R710,配备 2 个 Broadcom 5709(支持 iSCSI 和 TOE 卸载,使用 Dell 的多路径 IO 软件)。是的,我看过“Broadcom - die mutha”帖子 :S
转变
2 个 Juniper EX4200-48T 充当单个虚拟交换机
每个集群上的每个 Broadcom NIC 的一个连接都连接到一个交换机,并且每个交换机到 SAN 有 2 个千兆位连接。
存储区域网络
Dell EqualLogic PS6000E iSCSI SAN,配备 16 个(14 个 + 2 个热备用)2TB 7200rpm 驱动器
据我所知,从我认为它应该如何工作来看,我们理论上应该获得 200mbps,但正如你所看到的,我们并没有得到。
更新 2
为了提供更多背景信息,这里有一张图表,显示了 4 次独立运行的平均 mbps。
作为参考,Y 轴是 MBPS,X 轴是 IO 类型(随机或连续)、待处理的 IO 和操作(读取与写入)。
图片已禁用,因此这里有一个链接 -图表显示了 4 次 SQLIO 运行的平均结果
这里有两件事让我担心——
- 首先,随机读取吞吐量低于我的预期
- 其次,随机写入 IO 稳定在 110mbps,而这这表明该阵列应该能够实现更多功能。
对于此类设置,这是大致预期的模式吗?这里还有什么看起来不合适或错误的地方吗?
答案1
理论上我们应该能得到 200mbps
在你的梦里。当不进行随机 IO 时,大部分时间都花在从一个扇区跳到另一个扇区上。但是,对于随机 IO 和一些较慢的最终用户磁盘,这听起来差不多 - 欢迎来到一个世界,一对磁盘可以获得大约 300 IOPS,而 SSD 可以为您提供 60,000 IOPS。现在也许你明白 SSD 是随机 IO 的 SAN,最终用户喜欢的 MB/S 数字与数据库存储后端无关。
你还破坏的是:
每个线程启用多个 I/O,其中 2 个未完成
好的,鉴于 SATA NCQ(本机命令队列)可以智能地重新排序光盘中最多 32 个待处理请求,因此同时仅发送 2 个请求并不是最佳选择。您将得到 2x2 = 4 个未完成请求,但每个光盘可以处理 32 个请求。
他说,最终你需要 (a) 更快的磁盘 (b) 更多磁盘以获得更高的 IOPS。或者一个不错的二级缓存(Adaptec raid 控制器可以使用 SSD 作为读写缓存)。
答案2
不,你说得对,这根本不好 - 你没有提到 SAN 的布局,但考虑到它是 R10,那么你可以想象最坏的情况,即在这些 1Gbps 链路之一上至少有 4 个廉价 SATA 磁盘(由于 MAC 一致性,我怀疑两者是否会同时使用),即使这样,我预计随机读取 MBps 至少会翻倍,这是最坏的情况。有问题。
答案3
由于您没有提到 SAN 是什么,我假设它是通用的 iSCSI。
其中有哪些类型的磁盘?速度如何?RAID-10 上有哪些缓存(如果有)?
我同意 22MB/秒的速度太慢了,但如果只有 4 个 SATA 磁盘组成 RAID-10,那么 350 多的 IOPS 就差不多了。