存储评论网

NVMe性能对比:Windows Server 2025 vs. Ubuntu Server 24.04.4 LTS

企业版  ◇  软件

在发布了关于微软在 Windows Server 2025 中可选原生 NVMe 功能的文章后,我们收到了许多请求,希望我们直接比较 Windows Server 2025(支持原生 NVMe)和基于 Linux 的服务器操作系统之间的存储性能。一位特别热情的 Reddit 用户甚至提出请我们喝啤酒!由于显然没有其他合理的选择,我们决定在 Linux 上运行相同的测试。

Windows Server 2025 NVMe 与 Linux 固态硬盘性能对比

很久很久以前,在一个遥远的操作系统版本中

Linux 内核自 2012 年 3 月发布的3.3 版本起就支持 NVMe。同样,Windows Server 自 2012 R2 版本(大约在 2013 年 10 月)起也开始支持该协议(非原生支持,通过 SCSI 转换)。十多年过去了,用户仍在争论 Windows 和 Linux 哪个更适合存储,因此我们决定通过对比两者的基准测试结果,为这场争论火上浇油。

由于我们已获得在 Windows Server 2025 上使用非原生和原生存储栈的测试结果,因此我们认为有必要在 Linux 上评估两种存储栈。在 FIO 基准测试中,我们使用了 libaio 和 io_uring,这两种 API 是目前最流行的存储事务 API。虽然 io_uring 更新,并且在异步 I/O 方面进行了诸多改进,但 libaio 因其灵活性和易用性仍然被广泛使用(Didona、Pfefferle、Ioannou、Metzler 和 Trivedi,2022)。本文篇幅有限,无法对两种存储栈进行完整的架构概述,但我们仍将提供测试结果以便进行直接比较。

在 Ubuntu Server 24.04.4 LTS 上测试 NVMe

本次对比测试所用的硬件平台与我们之前发布的Windows Server 2025 原生 NVMe 文章中使用的服务器相同。为了确保最大吞吐量和一致的测试结果,该服务器配备了两颗 128 核 AMD EPYC 9754 CPU、768GB 4800 MT/s DDR5 内存,以及十五块30.72 TB Solidigm P5316 NVMe SSD(采用 PCIe 4.0),并以 JBOD 配置进行连接。

正如我们在之前的文章中提到的,Solidigm P5316 的间接单元大小为 64 KB,这意味着对于较小块大小(例如 4K 测试)的写入性能通常比预期要差。我们再次运行了不同块大小(4K、64K 和 128K)的测试模式,以提供更广泛的读写操作结果。

我们选择 Ubuntu Server 24.04.4 LTS 作为 Linux 示例,是因为它广受欢迎且拥有长期支持。它默认运行在 Linux 内核 6.8 上,虽然这并非最新或最先进的版本,但很可能代表了全球大部分 Linux 安装量。

核心亮点

  • Windows Server 2025 原生 NVMe 在四项读取性能基准测试中的三项中胜出。
  • 在大多数测试中,Windows Server 的 CPU 使用率较低。
  • Ubuntu Server 24.04.4 LTS 在四项写入性能基准测试中的三项中胜出。
米制 随机 4K 随机 64K
Windows 非原生 Windows 本机 Linux libaio Linux io_uring Windows 非原生 Windows 本机 Linux libaio Linux io_uring
随机阅读
带宽(GiB/s) 6.1 10.058 9.198 9.504 74.291 91.165 77.517 77.7
IOPS 1,598,959 2,636,516 2,411,000 2,491,000 1,217,176 1,493,637 1,270,000 1,273,000
平均延迟(毫秒) 0.169 0.104 0.198 0.192 0.239 0.207 0.377 0.376
CPU 总使用率 (%) 72.67 74.22 99.77 99.76 68.44 65.11 83.16 84.72

 

米制 顺序 64K 顺序 128K
Windows 非原生 Windows 本机 Linux libaio Linux io_uring Windows 非原生 Windows 本机 Linux libaio Linux io_uring
顺序阅读
带宽(GiB/s) 35.596 35.623 31.867 31.433 86.791 92.562 97.05 97
IOPS 583,192 583,638 522,000 515,000 710,978 758,252 795,000 795,000
平均延迟(毫秒) 0.809 0.812 0.919 0.932 0.613 0.608 0.603 0.604
CPU 总使用率 (%) 44.89 37.11 53.94 41.74 61.56 49.56 75.14 76.90

 

米制 随机 4K 随机 64K
Windows 非原生 Windows 本机 Linux libaio Linux io_uring Windows 非原生 Windows 本机 Linux libaio Linux io_uring
随机写入
带宽(GiB/s) 1.803 1.756 1.876 1.815 7.654 7.655 7.652 7.651
IOPS 472,725 460,383 492,000 476,000 125,391 125,406 125,000 125,000
平均延迟(毫秒) 0.992 1.028 0.974 1.007 3.814 3.816 3.827 3.828
CPU 总使用率 (%) 26.00 20.67 45.76 22.80 12.22 9.33 20.07 10.90

 

米制 顺序 64K 顺序 128K
Windows 非原生 Windows 本机 Linux libaio Linux io_uring Windows 非原生 Windows 本机 Linux libaio Linux io_uring
顺序写入
带宽(GiB/s) 44.67 50.087 52.283 52.25 50.477 50.079 52 52.083
IOPS 731,859 820,603 856,000 856,000 413,495 410,232 426,000 427,000
平均延迟(毫秒) 0.399 0.558 0.560 0.560 1.022 1.149 1.126 1.125
CPU 总使用率 (%) 70.44 57.78 61.88 62.75 58.44 47.33 61.49 44.27


注意:
由于 Windows Server 2025 和 Ubuntu Server 24.04.4 LTS 的 FIO 报告方式不同,我们的 Linux IOPS 结果四舍五入到千位。带宽、延迟和 CPU 使用率结果在两个平台上均采用一致的四舍五入方式。

数字不说谎

我们立即发现,Ubuntu 并非在所有方面都优于 Windows。虽然 libaio 和 io_uring 在我们的随机读取带宽测试中表现出色,但它们的性能仍不及微软原生 NVMe 协议栈。在我们的 64K 随机读取测试中,Windows NT 内核的性能比 Linux 内核高出约 17%,原生 NVMe 的读取速度达到了 91.165 GiB/s,而 io_uring 的最佳成绩为 77.7 GiB/s。

然而,托瓦兹的技术恐怖并非完全没有希望。在我们的一项读取性能基准测试——顺序 128K 测试中,Ubuntu Server 险胜 Windows Server。在此测试中,Linux 的 libaio 性能最佳,达到 97.05 GiB/s,而 Windows 的原生 NVMe 为 92.562 GiB/s,两者相差约 5%。这表明,在管理大于驱动器间接单元大小的块时,Linux 可能略占优势。

在Linux和Windows系统下,随机写入带宽表现一致,尤其是在64K基准测试中。这些测试的最佳和最差结果仅相差0.05%,表明所有存储堆栈都充​​分发挥了硬盘的全部性能。

有趣的是,Linux 6.8 内核在 64K 和 128K 块大小的顺序写入带宽测试中取得了胜利。虽然差距并不大,但开源软件栈在这两种情况下都比 Windows Server 的原生 NVMe 高出约 2 GiB/s。

延迟测试结果总体上与吞吐量测试结果一致,随机读取平均值的差异最能体现这一点。遗憾的是,对于 Tux 而言,libaio 和 io_uring 的延迟较高,其中 Windows Server 原生 NVMe(0.207 毫秒)和 libaio(0.377 毫秒)在 64K 次随机读取测试中的最大延迟差异为 0.17 毫秒。

基准测试中最令人震惊的发现或许是 Windows Server 2025 和 Ubuntu Server 24.04.4 LTS 之间 CPU 使用率的巨大差异。在四项随机和顺序读取基准测试中,有三项测试显示 Windows Server 原生 NVMe 的 CPU 使用率最低。最显著的结果出现在 128K 顺序读取基准测试中,Windows 的 CPU 使用率比 Linux 低 27.34%。

在随机写入和顺序写入测试中,使用 libaio 和 io_uring 的 CPU 使用率略有提升,但仍不足以阻止 Windows Server 上的原生 NVMe 在三项基准测试中胜出。值得注意的是,libaio 在 4K 随机写入测试中的 CPU 使用率达到了系统 CPU 的 45.76%,而其他存储方案的 CPU 使用率则徘徊在 20% 左右。

CPU晚宴,优胜者!

我们的测试结果显示,在不同块大小的随机和顺序性能测试中,Windows Server 和 Ubuntu Server 的性能非常接近。在带宽方面,采用原生 NVMe 的 Windows Server 2025 在大多数读取测试中通常优于 Linux,而 Linux 在写入测试中的表现略胜一筹。延迟测试结果也印证了这一点,但真正的亮点在于 Windows Server 2025 在使用原生 NVMe 时的 CPU 效率。

微软显然投入了大量精力,力求打造其最新的存储堆栈,虽然它并非能胜过 libaio 和 io_uring,但表现可圈可点。尽管这些结果并非适用于所有用例和服务器配置,但当存储性能比操作系统兼容性更为重要时,它们或许能够帮助服务器管理员决定部署 Windows 服务器还是 Linux 服务器。

欢迎在我们的社交平台或SR Discord服务器上留言,告诉我们您对这些测试结果的看法!您是否预料到Windows Server会在我们的测试中表现如此出色?或者您更看好Linux?您是否希望看到更多Linux服务器发行版或内核的测试?我们始终期待您的反馈,而像这样应读者要求进行的测试往往会成为我们最受欢迎的文章。

案例

Didona, D., Pfefferle, J., Ioannou, N., Metzler, B., & Trivedi, A. (2022年6月13日). 理解现代存储API:libaio、SPDK和io_uring的系统研究。SYSTOR '22, 120-121。2026年4月3日检索自https://atlarge-research.com/pdfs/2022-systor-apis.pdf

参与 StorageReview

电子报| YouTube | 播客iTunes / Spotify | Instagram | Twitter | TikTok | RSS订阅

安德鲁·瓦格

Andrew Waag 是 Linde plc 的分布式系统管理员,他的兴趣包括服务器硬件、企业存储系统和网络设备。他总是在寻找新事物来利用他的家庭实验室,并尝试虚拟化和存储技术。