Po opublikowaniu naszego artykułu na temat natywnej funkcji NVMe firmy Microsoft w systemie Windows Server 2025 otrzymaliśmy liczne prośby o bezpośrednie porównanie wydajności pamięci masowej pomiędzy systemem Windows Server 2025 (z natywną obsługą NVMe) a serwerowym systemem operacyjnym opartym na systemie Linux. Jeden ze szczególnie entuzjastycznych Redditorów zaoferował nam nawet piwo do przeprowadzenia testu! Przy tak ogromnym zapotrzebowaniu nie mieliśmy innego wyjścia, jak tylko uruchomić ten sam zestaw testów porównawczych w systemie Linux, aby zapewnić bezpośrednie porównanie, jakiego oczekiwali nasi czytelnicy.
Wydajne dyski SSD Windows Server 2025 NVMe i Linux
Dawno, dawno temu, w wersji systemu operacyjnego Far, Far Away
Linux obsługuje NVMe od wersji jądra 3.3 wydanej w marcu 2012 r. Podobnie system Windows Server oferuje obsługę NVMe (w wersji innej niż natywna, poprzez tłumaczenie SCSI) od wydania 2012 R2 około października 2013 r. Ponad dziesięć lat później debata na temat tego, czy system Windows, czy Linux zapewnia lepszą wydajność pamięci masowej, wciąż trwa, a my dodajemy więcej danych do tej rozmowy na podstawie naszych wyników testów porównawczych porównujących te dwa systemy operacyjne.
Ponieważ mieliśmy już wyniki testów systemu Windows Server 2025 przy użyciu zarówno nienatywnych, jak i natywnych stosów pamięci masowej, postanowiliśmy ocenić dwa popularne stosy pamięci masowej w systemie Linux w celu rzetelnego porównania. W naszych testach porównawczych FIO wykorzystaliśmy libaio i io_uring — dwa z najczęściej używanych interfejsów API do transakcji przechowywania. Chociaż io_uring jest znacznie nowszy i oferuje liczne ulepszenia asynchronicznych operacji we/wy, libaio pozostaje podstawą ze względu na swoją elastyczność i łatwość użycia (Didona, Pfefferle, Ioannou, Metzler i Trivedi, 2022). Pełny podział architektury obu stosów wykracza poza zakres tego artykułu, ale zapewniamy kompleksowe wyniki, aby umożliwić bezpośrednie porównanie.
Testowanie NVMe na Ubuntu Server 24.04.4 LTS
Do tego porównania użyliśmy tej samej platformy sprzętowej, co w naszym artykule dotyczącym natywnego NVMe systemu Windows Server 2025, zapewniając spójność i dokładne porównania wydajności. Serwer jest wyposażony w dwa 128-rdzeniowe procesory AMD EPYC 9754, 768 GB pamięci DDR5 pracującej z szybkością 4800 MT/s i piętnaście dysków SSD Solidigm P5316 NVMe o pojemności 30,72 TB (PCIe 4.0) skonfigurowanych w trybie JBOD.
Jak zauważyliśmy w naszym poprzednim artykule, Solidigm P5316 ma jednostkę pośrednią o wielkości 64 kilobajtów, co często skutkuje niższą niż oczekiwano wydajnością zapisu w przypadku mniejszych rozmiarów bloków (takich jak testy 4K). Aby zapewnić kompleksowy obraz, przeprowadziliśmy testy z blokami o rozmiarach 4K, 64K i 128K, mierząc zarówno operacje odczytu, jak i zapisu we wszystkich konfiguracjach.
Wybraliśmy Ubuntu Server 24.04.4 LTS jako naszego przedstawiciela Linuksa ze względu na jego powszechną popularność i status długoterminowego wsparcia (LTS). Domyślnie jest dostarczany z jądrem Linuksa 6.8 — chociaż nie jest to najnowsza dostępna wersja jądra, prawdopodobnie reprezentuje dużą część rzeczywistych instalacji serwerów Linux na całym świecie.
Przegląd najważniejszych wydarzeń
-
Windows Server 2025 (natywny NVMe) przewyższa Ubuntu w 3 z 4 testów porównawczych wydajności odczytu
-
Podczas większości testów system Windows Server konsekwentnie wykazywał niższe użycie procesora
-
Ubuntu Server 24.04.4 LTS wygrywa w 3 z 4 testów wydajności zapisu
Wyniki testów porównawczych
Losowa wydajność odczytu
|
Metryczny
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
|---|---|---|---|---|---|---|---|---|
|
Rozmiar bloku
|
Losowe 4K
|
Losowe 64 tys
|
||||||
|
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
|
Wydajność odczytu sekwencyjnego
|
Metryczny
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux i_uring
|
|---|---|---|---|---|---|---|---|---|
|
Rozmiar bloku
|
Sekwencyjne 64 tys
|
Sekwencyjne 128 tys
|
||||||
|
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
|
758252
|
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
|
Losowa wydajność zapisu
|
Metryczny
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
|---|---|---|---|---|---|---|---|---|
|
Rozmiar bloku
|
Losowe 4K
|
Losowe 64 tys
|
||||||
|
Przepustowość (GiB/s)
|
1.803
|
1,756
|
1,876
|
1,815
|
7,654
|
7,655
|
7.652
|
7.651
|
|
IOPS
|
472725
|
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
|
Wydajność zapisu sekwencyjnego
|
Metryczny
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
Windows nienatywny
|
Natywny system Windows
|
Libaio dla Linuksa
|
Linux io_uring
|
|---|---|---|---|---|---|---|---|---|
|
Rozmiar bloku
|
Sekwencyjne 64 tys
|
Sekwencyjne 128 tys
|
||||||
|
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
|
410232
|
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 w systemie Linux są zaokrąglone do pełnych 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 przepustowości, opóźnień i wykorzystania procesora są zaokrąglane równomiernie na obu platformach.
Liczby nie kłamią
Nasze testy porównawcze jasno pokazują, że Ubuntu nie przewyższa Windowsa w każdej kategorii. Chociaż libaio i io_uring zapewniły wysoką przepustowość w testach odczytu losowego, nie mogły dorównać wydajności natywnego stosu NVMe firmy Microsoft. Jądro systemu Windows NT było lepsze od jądra Linuksa o około 17% w naszych testach losowego odczytu 64 KB, przy czym natywna pamięć NVMe systemu Windows osiągnęła 91,165 GiB/s w porównaniu do najlepszego wyniku io_uring wynoszącego 77,7 GiB/s.
Jednak Linux nie jest pozbawiony zwycięstw. Ubuntu Server o włos wyprzedził Windows Server w teście wydajności w jednym odczycie: sekwencyjnym teście 128 KB. W tym przypadku libaio dla Linuksa radziło sobie najlepiej przy 97,05 GiB/s w porównaniu z natywnym NVMe systemu Windows przy 92,562 GiB/s — różnica około 5%. Sugeruje to, że Linux może mieć niewielką przewagę w zarządzaniu blokami o rozmiarach większych niż jednostki pośrednie dysków.
Przepustowość zapisu losowego była stała w obu systemach operacyjnych, szczególnie w testach porównawczych 64 KB. Najlepsze i najgorsze wyniki w tych testach różniły się zaledwie o 0,05%, co oznacza, że wszystkie stosy pamięci były w stanie w pełni wykorzystać potencjał dysków.
Co ciekawe, jądro Linuksa 6.8 zwyciężyło w testach przepustowości zapisu sekwencyjnego dla bloków o wielkości 64 KB i 128 KB. Chociaż różnica nie była dramatyczna, stosy pamięci masowej typu open source w obu przypadkach przewyższały natywną technologię NVMe systemu Windows Server o około 2 GiB/s.
Wyniki opóźnień zasadniczo odzwierciedlają wydajność przepustowości, szczególnie w przypadku średnich odczytów losowych. Na nieszczęście w przypadku Linuksa libaio i io_uring wykazywały większe opóźnienia, przy czym największą przerwę zaobserwowano w przypadku losowych odczytów 64 tys.: natywna pamięć NVMe w systemie Windows Server miała średnie opóźnienie wynoszące 0,207 ms w porównaniu do 0,377 ms libaio — różnica 0,17 ms.
Być może najbardziej zaskakującym wnioskiem z naszych testów porównawczych jest znacząca różnica w wykorzystaniu procesora pomiędzy Windows Server 2025 i Ubuntu Server 24.04.4 LTS. W 3 z 4 testów porównawczych z odczytem losowym i sekwencyjnym natywne NVMe dla systemu Windows Server charakteryzowało się najniższym zużyciem procesora. Najbardziej uderzający wynik uzyskano w teście odczytu sekwencyjnego 128 KB, w którym system Windows zużywał o 27,34% mniej procesora niż Linux.
Libaio i io_uring wypadły nieco lepiej w testach zapisu losowego i sekwencyjnego, ale nie na tyle dobrze, aby natywny NVMe systemu Windows Server wygrał 3 z 4 testów porównawczych użycia procesora zapisu. Godnym uwagi wyjątkiem było użycie procesora libaio podczas testu losowego zapisu 4K, które osiągnęło 45,76% — znacznie więcej niż ~20% użycia procesora obserwowanego w przypadku innych stosów pamięci.
Zwycięzca Zwycięzca, Kolacja z procesorem
Nasze wyniki pokazują, że systemy Windows Server i Ubuntu Server wypadają blisko w bezpośrednich losowych i sekwencyjnych testach wydajności dla różnych rozmiarów bloków. Pod względem przepustowości system Windows Server 2025 z natywnym NVMe generalnie przewyższał Linuksa w większości testów odczytu, podczas gdy Linux zapewniał nieco lepsze wyniki w testach zapisu. Dane dotyczące opóźnień kształtowały się podobnie, ale wyróżniającą się zaletą była wydajność procesora systemu Windows Server 2025 podczas korzystania z natywnego NVMe.
Microsoft wyraźnie zainwestował dużo w udoskonalenie swojego najnowszego stosu pamięci masowej i chociaż nie wygrywa w każdej kategorii z libaio i io_uring, to podejmuje silną walkę. Wyniki te nie są ostateczne we wszystkich przypadkach użycia i konfiguracjach serwerów, ale dostarczają cennych informacji dla administratorów serwerów decydujących o wdrożeniu systemu Windows lub Linux, gdy wydajność pamięci masowej jest najważniejszym priorytetem – ponad zgodnością z systemem operacyjnym.
Daj nam znać, co myślisz o tych wynikach, komentując na naszych platformach społecznościowych lub na Discordzie SR! Czy spodziewałeś się, że Windows Server będzie tak dobrze działać, czy też kibicowałeś Linuksowi? Czy chciałbyś zobaczyć więcej testowanych dystrybucji lub jąder Linuksa? Zawsze jesteśmy chętni na Wasze opinie, a testy prosine przez czytelników, takie jak ten, są często naszymi ulubionymi.
Pekin Qianxing Jietong Technology Co., Ltd.
Sandy Yang/dyrektor ds. strategii globalnej
WhatsApp / WeChat: +86 13426366826
E-mail: yangyd@qianxingdata.com
Strona internetowa: www.qianxingdata.com/www.storageserver.com
Koncentracja biznesowa:
Dystrybucja produktów ICT/Integracja systemów i usługi/Rozwiązania infrastrukturalne
Dzięki ponad 20-letniemu doświadczeniu w dystrybucji IT współpracujemy z wiodącymi światowymi markami, aby dostarczać niezawodne produkty i profesjonalne usługi.
„Wykorzystanie technologii do budowy inteligentnego świata”Twój zaufany dostawca usług produktów ICT!
Sandy Yang/dyrektor ds. strategii globalnej
WhatsApp / WeChat: +86 13426366826
E-mail: yangyd@qianxingdata.com
Strona internetowa: www.qianxingdata.com/www.storageserver.com
Koncentracja biznesowa:
Dystrybucja produktów ICT/Integracja systemów i usługi/Rozwiązania infrastrukturalne
Dzięki ponad 20-letniemu doświadczeniu w dystrybucji IT współpracujemy z wiodącymi światowymi markami, aby dostarczać niezawodne produkty i profesjonalne usługi.
„Wykorzystanie technologii do budowy inteligentnego świata”Twój zaufany dostawca usług produktów ICT!



