总结:在同样的硬件条件下,Ubuntu 的 IOPS 性能比 Win2k3 高出约 50%。Win2008R2 最初的性能与 Win2k3 相同,但其性能逐渐提高,直到与 Ubuntu 相当(持续活动大约需要 20-30 秒)。
问题:有人能解释一下 Win2008R2 的行为吗?
详细信息:我只会提供我认为相关的详细信息,但如果我遗漏了某些内容,请与我联系以获取更多信息。我们有一个带有 11x600GB SAS RAID5 组的 SAN。一切都通过 4Gbps 光纤连接。我创建了一个 500GB LUN 并将其与运行 Win2k3Entx64 的物理服务器共享。我创建了另一个 500GB LUN 并将其与运行 ESXi 的服务器共享。我在 ESXi 中创建了一个 Win2k3Entx64 VM、一个 Ubuntu 10.04 x64 和一个 Win2008R2x64 VM。物理 Win2k3 服务器的性能略优于 Win2k3 VM。Ubuntu VM 超过了两个 Win2k3 服务器。Win2008 VM 的表现与 Win2k3 类似,持续了大约 5-10 秒,然后开始缓慢提升性能,直到与 Ubuntu 服务器大致相同。
IOmeter 设置和结果:32k 50% 读取 0% 随机 1 个 Worker 对 1.5GB 测试文件进行操作。
Win2k3x64(物理):平均 I/O 响应(毫秒) - 1.0789 每秒总 I/O - 926.28
Win2k3x64 (VM):平均 I/O 响应 (ms) - 1.1786 每秒总 I/O - 847.81
Ubuntu (VM) :平均 I/O 响应 (ms) - .7849 每秒总 I/O - 1273.00
Win2008R2(VM)Intial:平均 I/O 响应(毫秒) - 1.0959 每秒总 I/O - 910.00
Win2008R2(VM)30 秒:平均 I/O 响应(毫秒) - .8810 每秒总 I/O - 1133.66
您可能会说,切换到 Linux!我们的一半应用程序都依赖于 MS-SQL 和 Win2k3,所以这不是一个选择。切换到 2008 服务器可能是一个选择,但在我弄清楚为什么会得到这些结果之前,我不会这么做。
第2部分
对齐肯定是问题所在。事实证明 2008 和 Ubuntu 是自动对齐的。现在来谈谈问题 2。对于一个 IOmeter 工作进程,它没问题。但是,对于我添加的每个工作进程,虚拟机上的性能与物理服务器相比都会变差。我最多添加了 8 个(每个 CPU 1 个),与物理服务器相比,我的性能又下降了 50%。
我在 Win2k3 上尝试了 4k、16k 和 64k 磁盘分配。SCSI 驱动程序是 LSI Logic PCI-X Ultra 320 SCSI 主机适配器(版本 5.2.3790.3959)。CPU 使用率与物理服务器大致相同,因此这不是 CPU 资源问题。
你们解决了第一个问题,希望你们也能对这个问题提出一些建议。谢谢
答案1
在我看来,您尚未在 Win2K3 上对齐测试卷。默认情况下,Win2K3 不会对齐分区,因此 MBR 会导致偏移,从而导致跨条带边界的写入受到惩罚。Win2K8 自动对齐 1Meg,这通常与大多数 RAID 条带边界相匹配。最近的 Ubuntu 版本还会从 1Meg 偏移开始自动对齐分区。
使用 32K IO 大小,您可能会遇到很多 RAID 条带边界。您看到的 50% 惩罚比我见过的任何惩罚都要高,但确切的惩罚取决于您的 RAID 控制器的条带大小。
我无法很好地解释 W2K8 的加速行为。
答案2
我同意 Helvick 的观点,2003 可能存在对齐问题。我怀疑随着时间的推移,2008 机器会使用更多缓存。我会尽可能像 VMware 那样设置 IOP 测试: