存儲評論網

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 | PodcastiTunes / Spotify | Instagram | Twitter | TikTok | RSS訂閱

安德魯·瓦格

Andrew Waag 是 Linde plc 的分散式系統管理員,其興趣包括伺服器硬體、企業儲存系統和網路設備。他總是在尋找與家庭實驗室相關的新事物並嘗試虛擬化和儲存技術。