StorageReview.com

Porównanie wydajności NVMe: Windows Server 2025 kontra Ubuntu Server 24.04.4 LTS

Enterprise   ◇  Oprogramowanie

Po opublikowaniu naszego artykułu o opcjonalnej, natywnej funkcji NVMe firmy Microsoft w systemie Windows Server 2025 otrzymaliśmy wiele próśb o bezpośrednie porównanie wydajności pamięci masowej między systemem Windows Server 2025 z natywnym NVMe a serwerowym systemem operacyjnym opartym na Linuksie. Jeden z wyjątkowo entuzjastycznych użytkowników Reddita zaoferował nam nawet piwo za tę usługę! Ponieważ oczywiście nie było innych rozsądnych opcji, postanowiliśmy przeprowadzić te same testy na Linuksie.

Wydajność dysków SSD NVMe w systemie Windows Server 2025 i Linux

Dawno temu, w wersji systemu operacyjnego daleko, daleko stąd

Jądro Linux obsługuje NVMe od wersji 3.3 , wydanej w marcu 2012 r. Podobnie protokół jest obsługiwany w systemie Windows Server (nie natywnie, za pośrednictwem translacji SCSI) od 2012 R2, czyli od października 2013 r. Ponad dekadę później użytkownicy wciąż spierają się, który system pamięci masowej jest lepszy: Windows czy Linux. Pomyśleliśmy więc, że dodamy trochę oliwy do ognia, prezentując wyniki testów porównawczych obu systemów.

Ponieważ dysponujemy wynikami testów dla systemu Windows Server 2025, wykorzystując zarówno natywne, jak i nienatywne stosy pamięci masowej, uznaliśmy za stosowne przetestowanie dwóch stosów pamięci masowej w systemie Linux. Do testów FIO wykorzystaliśmy zarówno libaio, jak i io_uring – dwa z najpopularniejszych interfejsów API do obsługi transakcji pamięci masowej. Chociaż io_uring jest znacznie nowszy i oferuje wiele ulepszeń w zakresie asynchronicznego wejścia/wyjścia, libaio pozostaje szeroko stosowany ze względu na swoją elastyczność i łatwość obsługi (Didona, Pfefferle, Ioannou, Metzler i Trivedi, 2022). Pełne omówienie architektury obu stosów wykracza poza zakres tego artykułu, ale nadal przedstawiamy wyniki umożliwiające bezpośrednie porównanie.

Testowanie NVMe na Ubuntu Server 24.04.4 LTS

Platformą sprzętową, którą wykorzystaliśmy w tym porównaniu, jest ten sam serwer, który wykorzystaliśmy w naszym artykule o natywnym interfejsie NVMe dla systemu Windows Server 2025. Aby zapewnić maksymalną przepustowość i spójne wyniki, serwer wyposażono w dwa 128-rdzeniowe procesory AMD EPYC 9754, 768 GB pamięci DDR5 o przepustowości 4800 MT/s oraz piętnaście dysków SSD Solidigm P5316 NVMe o pojemności 30.72 TB z interfejsem PCIe 4.0 w konfiguracji JBOD.

Jak wspomnieliśmy w poprzednim artykule, Solidigm P5316 ma jednostkę pośrednią o rozmiarze 64 kilobajtów, co oznacza, że ​​wydajność zapisu dla mniejszych rozmiarów (takich jak testy 4K) jest często gorsza od oczekiwanej. Ponownie przeprowadziliśmy różne wzorce testowe dla bloków o rozmiarach 4K, 64K i 128K, aby uzyskać szeroki zakres wyników dla operacji odczytu i zapisu.

Wybraliśmy Ubuntu Server 24.04.4 LTS jako przykład Linuksa ze względu na jego popularność i długotrwałe wsparcie. Domyślnie działa na jądrze Linuksa 6.8, które nie jest najnowsze ani najbardziej zaawansowane, ale prawdopodobnie stanowi znaczną część instalacji na całym świecie.

Najważniejsze

  • Natywny interfejs NVMe systemu Windows Server 2025 wygrywa w trzech z czterech testów wydajności odczytu
  • W większości testów w systemie Windows Server zaobserwowano niższe wykorzystanie procesora
  • Ubuntu Server 24.04.4 LTS wygrywa w trzech z czterech testów wydajności zapisu
metryczny Losowe 4K Losowe 64K
Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring
Losowe czytanie
Przepustowość (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
Średnie opóźnienie (ms) 0.169 0.104 0.198 0.192 0.239 0.207 0.377 0.376
Całkowite użycie procesora (%) 72.67 74.22 99.77 99.76 68.44 65.11 83.16 84.72

 

metryczny Sekwencyjny 64K Sekwencyjny 128K
Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring
Sekwencyjny odczyt
Przepustowość (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
Średnie opóźnienie (ms) 0.809 0.812 0.919 0.932 0.613 0.608 0.603 0.604
Całkowite użycie procesora (%) 44.89 37.11 53.94 41.74 61.56 49.56 75.14 76.90

 

metryczny Losowe 4K Losowe 64K
Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring
Losowy zapis
Przepustowość (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
Średnie opóźnienie (ms) 0.992 1.028 0.974 1.007 3.814 3.816 3.827 3.828
Całkowite użycie procesora (%) 26.00 20.67 45.76 22.80 12.22 9.33 20.07 10.90

 

metryczny Sekwencyjny 64K Sekwencyjny 128K
Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring Windows nienatywny Natywny dla systemu Windows Biblioteka Linux Linux io_uring
Zapis sekwencyjny
Przepustowość (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
Średnie opóźnienie (ms) 0.399 0.558 0.560 0.560 1.022 1.149 1.126 1.125
Całkowite użycie procesora (%) 70.44 57.78 61.88 62.75 58.44 47.33 61.49 44.27


Uwaga:
Nasze wyniki IOPS dla systemu Linux są zaokrąglane do tysięcy ze względu na różnice w raportowaniu FIO między systemami Windows Server 2025 i Ubuntu Server 24.04.4 LTS. Wyniki dotyczące przepustowości, opóźnień i użycia procesora są zaokrąglane spójnie na obu platformach.

Liczby nie kłamią

Od razu widać, że Ubuntu nie przewyższa Windowsa w każdej kategorii. Chociaż libaio i io_uring zapewniły doskonałą przepustowość w naszych testach przepustowości losowego odczytu, nie dorównały wydajności natywnego stosu NVMe firmy Microsoft. Jądro Windows NT pokonało jądro Linuksa o około 17% w naszych testach losowego odczytu 64 KB, uzyskując zwycięski wynik 91.165 GiB/s na natywnym NVMe w porównaniu z najlepszym wynikiem io_uring wynoszącym 77.7 GiB/s.

Jednak nie wszystko stracone dla technologicznego terroru Torvaldsa. Ubuntu Server minimalnie pokonał Windows Server w jednym z naszych testów wydajności odczytu: sekwencyjnym teście 128 KB. W tym przypadku libaio Linuksa uzyskało najlepszy wynik 97.05 GiB/s, w porównaniu z natywnym NVMe Windowsa z 92.562 GiB/s, co stanowi różnicę około 5%. Wskazuje to, że Linux może mieć niewielką przewagę w zarządzaniu rozmiarami bloków większymi niż jednostki pośrednie dysków.

Przepustowość zapisu losowego była spójna zarówno w systemach Linux, jak i Windows, szczególnie w testach porównawczych 64 KB. Najlepsze i najgorsze wyniki z tych testów różniły się zaledwie o 0.05%, co sugeruje, że wszystkie stosy pamięci masowej w pełni wykorzystały potencjał dysków.

Co ciekawe, jądro Linux 6.8 zwyciężyło w sekwencyjnych testach przepustowości zapisu dla rozmiarów bloków wynoszących 64 K i 128 K. Choć różnica nie była kolosalna, to w obu przypadkach stosy oprogramowania open source pokonały natywny interfejs NVMe systemu Windows Server o około 2 GiB/s.

Wyniki dotyczące opóźnień generalnie pokrywały się z wynikami testów przepustowości, co najlepiej obrazuje różnica w średnich wartościach losowych odczytów. Niestety w przypadku Tuxa, libaio i io_uring charakteryzowały się wyższymi opóźnieniami, z największą różnicą 0.17 ms między natywnym NVMe systemu Windows Server (0.207 ms) a libaio (0.377 ms) dla losowych odczytów 64 KB.

Być może najbardziej szokującym odkryciem z naszych testów porównawczych jest ogromna różnica w obciążeniu procesora między systemami Windows Server 2025 i Ubuntu Server 24.04.4 LTS. W trzech z czterech testów porównawczych z odczytem losowym i sekwencyjnym, natywny interfejs NVMe dla systemu Windows Server charakteryzował się najniższym obciążeniem procesora. Najbardziej zauważalny wynik zaobserwowano podczas testu porównawczego z odczytem sekwencyjnym 128 KB, w którym system Windows zużywał o 27.34% mniej zasobów niż Linux.

Wykorzystanie procesora przez Libaio i io_uring wypadło nieco lepiej w testach zapisu losowego i sekwencyjnego, ale wciąż nie wystarczyło to, aby natywny NVMe w systemie Windows Server wygrał w trzech testach. Godnym uwagi wyjątkiem było wykorzystanie procesora przez Libaio podczas testu zapisu losowego 4K, które osiągnęło 45.76% obciążenia procesora systemu, podczas gdy pozostałe stosy pamięci masowej oscylowały wokół 20%.

Zwycięzca, zwycięzca, kolacja CPU

Jak pokazują nasze wyniki, systemy Windows Server i Ubuntu Server osiągają zbliżone wyniki w testach porównawczych, zarówno losowych, jak i sekwencyjnych, przy różnych rozmiarach bloków. Pod względem przepustowości, system Windows Server 2025 z natywnym interfejsem NVMe generalnie przewyższał system Linux w większości testów odczytu, podczas gdy Linux uzyskał nieco lepsze wyniki w testach zapisu. Nasze dane dotyczące opóźnień pokazały podobny obraz, ale prawdziwym hitem była wydajność procesora systemu Windows Server 2025 z natywnym interfejsem NVMe.

Microsoft wyraźnie dołożył starań, aby jego najnowszy stos pamięci masowej był jak najlepszy i choć nie zawsze wygrywa z libaio i io_uring, to stawia czoła wyzwaniom. Chociaż wyniki te nie są ostateczne dla wszystkich przypadków użycia i konfiguracji serwerów, mogą pomóc administratorom serwerów zdecydować, czy wdrożyć serwer Windows, czy Linux, gdy wydajność pamięci masowej jest ważniejsza niż kompatybilność z systemem operacyjnym.

Dajcie nam znać, co sądzicie o tych wynikach, komentując na naszych platformach społecznościowych lub na Discordzie SR ! Spodziewaliście się, że Windows Server wypadnie tak dobrze w naszych testach, czy też kibicowaliście Linuksowi? Chcielibyście zobaczyć więcej przetestowanych dystrybucji lub kerneli Linuksa na serwerach? Zawsze czekamy na Wasze opinie, a testy na prośbę czytelników, takie jak te, często stają się naszymi ulubionymi artykułami.

Referencje

Didona, D., Pfefferle, J., Ioannou, N., Metzler, B. i Trivedi, A. (13 czerwca 2022). Zrozumienie nowoczesnych interfejsów API pamięci masowej: systematyczne badanie libaio, SPDK i io_uring. SYSTOR '22, s. 120–121. Pobrano 3 kwietnia 2026 r. z https://atlarge-research.com/pdfs/2022-systor-apis.pdf

Skontaktuj się z StorageReview

Biuletyn | YouTube | Podcast iTunes / Spotify | Instagram | Twitter | TikTok | Kanał RSS

Andrzej Waag

Andrew Waag jest administratorem systemów rozproszonych w firmie Linde plc, którego zainteresowania obejmują sprzęt serwerowy, korporacyjne systemy pamięci masowej oraz sprzęt sieciowy. Zawsze szuka nowych zastosowań dla swojego laboratorium domowego i eksperymentuje z technologiami wirtualizacji i pamięci masowej.