假设我们有一个装有主数据库引擎的 SQL Server 2000 机器。
我们添加了一个 iSCSI SAN,现在该服务器有一张连接到常规网络的卡和一张连接到 iSCSI 网络的卡。
数据是通过另一台服务器请求的,该服务器是我们的应用程序服务器,它不在 iSCSI 网络上。
我们在数据服务器上的 iSCSI 连接上启用了 Jumbo Packets 至 9000(以及 iSCSI 网络上的其他项目)。
在阅读了Jonathan Kehayias 的文章后,我想知道我们所做的是否正确。
在我的 OLTP 系统上进行测试的最佳方法是什么?操作系统是 Windows Server 2003 R2 Enterprise x64 SP2,SQL Server 是 Enterprise 2000 x86。
可能最简单的测试方法是使用 SQLIO。我在这里有一个教程:
http://sqlserverpedia.com/wiki/SAN_Performance_Tuning_with_SQLIO
您可以在前后测试它以查看巨型帧是否有帮助。
您链接到的文章中的建议非常好,它解释了为什么巨型帧在通用 LAN 环境中不一定是一个好主意,但他并没有真正讨论 iSCSI 网络流量本身的性质,这通常会受益来自巨型帧,因为磁盘 IO 流量将是相对较大的块 - 如果您没有修改它,则为 8kb。一些 SQL 专家可能想纠正我,但我认为所有数据库 IO 都将是 8kb 块。如果读\写块大小为 8k,则单个 IO 可以放入单个 Jumbo 帧(协议开销相对较低 - 通常 < 100 字节),而不必分成六个标准大小的块。
您可能不会看到任何显着的吞吐量变化(可能只有几个 %),但我希望看到的是 CPU 负载和网络接口驱动程序的中断率显着降低,因为您的 NIC 通常只处理数量的 1/6数据包携带相同数量的数据。这对您来说可能不是什么大不了的事,但如果您有多个 NIC 承载 iSCSI 流量,它可能会增加大量 CPU 资源或繁忙的服务器。如果您有带有 iSCSI\TCP 卸载的智能 NIC,那么好处显然会降低,但总体而言,增加的帧大小仍然使 iSCSI 网络结构上的所有内容更容易,因此仍然推荐。
也就是说 - 我会赞同 Brent Ozar 的建议,即如果可能的话,您应该进行一些性能测试。
如果不是帮助,我会感到惊讶。诚然,我是 Unix SA,而不是 DBA/Networking/Windows 人,但我希望它只会做得很好(假设它当然受到端到端的支持)。
我希望数据库一次至少读取和写入一个页面,通常一个数据库页面与操作系统页面的大小相同(大多数 RISC 系统的 32 位为 4K,64 位为 8K,但是我怀疑它仍然是 64 位 AMD64 系统的 4K)。当然,理论上,您可以读取和写入单个磁盘块(512 字节),但我敢打赌他们不会。因此,对于 4K 与 1.5K(普通以太网),您可以用 1/3 的数据包数量来满足大多数请求,这应该是一个胜利,甚至可能是一个明显的胜利。
这篇文章与您的关注完全无关。它谈论您的 SQL Server 看到的应用程序流量。另一方面,您有一个关于存储连接的问题 - 您的服务器的 iSCSI 发起程序看到的流量。
所以,首先,忘记这篇文章。
其次,我还没有看到存储供应商提供的不推荐“启用巨型帧”的最佳实践或白皮书或手册。
申请无所谓。平台无所谓。iSCSI 喜欢巨型帧,句号。