Na de publicatie van ons artikel over Microsofts optionele native NVMe-functie in Windows Server 2025 ontvingen we meerdere verzoeken voor een directe vergelijking van de opslagprestaties tussen Windows Server 2025 met native NVMe en een Linux-gebaseerd serverbesturingssysteem. Een bijzonder enthousiaste Reddit-gebruiker bood ons zelfs bier aan om het te doen! Omdat er uiteraard geen andere redelijke opties waren, besloten we dezelfde tests op Linux uit te voeren.
Lang geleden, in een OS-versie die heel, heel ver weg lag.
De Linux-kernel ondersteunt NVMe al sinds versie 3.3 , uitgebracht in maart 2012. Ook Windows Server ondersteunt het protocol (niet-native, via SCSI-vertaling) sinds versie 2012 R2, rond oktober 2013. Meer dan tien jaar later discussiëren gebruikers nog steeds over de vraag of Windows of Linux beter is voor opslag. Daarom leek het ons een goed idee om de discussie verder aan te wakkeren met benchmarkresultaten die de twee vergelijken.
Omdat we testresultaten hebben voor Windows Server 2025 met zowel niet-native als native opslagstacks, vonden we het gepast om twee opslagstacks op Linux te evalueren. Voor onze FIO-benchmarks gebruikten we zowel libaio als io_uring, twee van de populairste API's voor opslagtransacties. Hoewel io_uring aanzienlijk nieuwer is en veel verbeteringen biedt voor asynchrone I/O, wordt libaio nog steeds veel gebruikt vanwege de flexibiliteit en het gebruiksgemak (Didona, Pfefferle, Ioannou, Metzler & Trivedi, 2022). Een volledig overzicht van de architectuur van beide stacks valt buiten het bestek van dit artikel, maar we presenteren wel de resultaten voor een directe vergelijking.
NVMe testen op Ubuntu Server 24.04.4 LTS
Ons hardwareplatform voor deze vergelijking is dezelfde server die we gebruikten in ons artikel over native NVMe in Windows Server 2025. Om maximale doorvoer en consistente resultaten te garanderen, is deze uitgerust met twee AMD EPYC 9754 CPU's met 128 kernen, 768 GB DDR5-geheugen met een snelheid van 4800 MT/s en vijftien Solidigm P5316 NVMe SSD's van 30.72 TB met PCIe 4.0 in een JBOD-configuratie.
Zoals we in ons vorige artikel al aangaven, heeft de Solidigm P5316 een indirectie-eenheid van 64 kilobyte, wat betekent dat de schrijfprestaties voor kleinere blokken (zoals 4K-tests) vaak slechter zijn dan verwacht. We hebben opnieuw verschillende testpatronen uitgevoerd met blokgroottes van 4K, 64K en 128K om een breed scala aan resultaten voor lees- en schrijfbewerkingen te verkrijgen.
We hebben Ubuntu Server 24.04.4 LTS als Linux-voorbeeld gekozen vanwege de populariteit en de langdurige ondersteuning. Het draait standaard op Linux-kernel 6.8, wat niet de nieuwste of meest geavanceerde is, maar waarschijnlijk wel een groot deel van de installaties wereldwijd vertegenwoordigt.
Hoogtepunten
- Windows Server 2025 native NVMe wint in drie van de vier benchmarks voor leesprestaties.
- Bij Windows Server werd tijdens de meeste tests een lager CPU-gebruik waargenomen.
- Ubuntu Server 24.04.4 LTS wint in drie van de vier benchmarks voor schrijfprestaties.
| metrisch | Willekeurige 4K | Willekeurige 64K | ||||||
|---|---|---|---|---|---|---|---|---|
| Windows niet-native | Windows Native | Linux-libai | Linux io_uring | Windows niet-native | Windows Native | Linux-libai | Linux io_uring | |
| Willekeurig lezen | ||||||||
| Bandbreedte (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 |
| Gemiddelde latentie (ms) | 0.169 | 0.104 | 0.198 | 0.192 | 0.239 | 0.207 | 0.377 | 0.376 |
| Totaal CPU-gebruik (%) | 72.67 | 74.22 | 99.77 | 99.76 | 68.44 | 65.11 | 83.16 | 84.72 |
| metrisch | Sequentiële 64K | Sequentiële 128K | ||||||
|---|---|---|---|---|---|---|---|---|
| Windows niet-native | Windows Native | Linux-libai | Linux io_uring | Windows niet-native | Windows Native | Linux-libai | Linux io_uring | |
| Sequentieel lezen | ||||||||
| Bandbreedte (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 |
| Gemiddelde latentie (ms) | 0.809 | 0.812 | 0.919 | 0.932 | 0.613 | 0.608 | 0.603 | 0.604 |
| Totaal CPU-gebruik (%) | 44.89 | 37.11 | 53.94 | 41.74 | 61.56 | 49.56 | 75.14 | 76.90 |
| metrisch | Willekeurige 4K | Willekeurige 64K | ||||||
|---|---|---|---|---|---|---|---|---|
| Windows niet-native | Windows Native | Linux-libai | Linux io_uring | Windows niet-native | Windows Native | Linux-libai | Linux io_uring | |
| Willekeurig schrijven | ||||||||
| Bandbreedte (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 |
| Gemiddelde latentie (ms) | 0.992 | 1.028 | 0.974 | 1.007 | 3.814 | 3.816 | 3.827 | 3.828 |
| Totaal CPU-gebruik (%) | 26.00 | 20.67 | 45.76 | 22.80 | 12.22 | 9.33 | 20.07 | 10.90 |
| metrisch | Sequentiële 64K | Sequentiële 128K | ||||||
|---|---|---|---|---|---|---|---|---|
| Windows niet-native | Windows Native | Linux-libai | Linux io_uring | Windows niet-native | Windows Native | Linux-libai | Linux io_uring | |
| Sequentiële schrijven | ||||||||
| Bandbreedte (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 |
| Gemiddelde latentie (ms) | 0.399 | 0.558 | 0.560 | 0.560 | 1.022 | 1.149 | 1.126 | 1.125 |
| Totaal CPU-gebruik (%) | 70.44 | 57.78 | 61.88 | 62.75 | 58.44 | 47.33 | 61.49 | 44.27 |
Let op: Onze Linux IOPS-resultaten worden afgerond op het dichtstbijzijnde duizendtal vanwege verschillen in FIO-rapportage tussen Windows Server 2025 en Ubuntu Server 24.04.4 LTS. Bandbreedte, latentie en CPU-gebruik worden op beide platforms consistent afgerond.
De cijfers liegen niet
We zien meteen dat Ubuntu niet in elke categorie beter presteert dan Windows. Hoewel libaio en io_uring uitstekende doorvoersnelheden behaalden in onze bandbreedtetests met willekeurige leesbewerkingen, evenaarden ze niet de prestaties van Microsofts eigen NVMe-stack. De Windows NT-kernel versloeg de Linux-kernel met ongeveer 17% in onze tests met willekeurige leesbewerkingen van 64 KB, met een winnende score van 91.165 GiB/s op native NVMe tegenover de beste score van 77.7 GiB/s voor io_uring.
Er is echter nog hoop voor Torvalds' technologische terreur. Ubuntu Server versloeg Windows Server nipt in een van onze benchmarks voor leesprestaties: de sequentiële 128K-test. Linux' libaio presteerde hier het beste met 97.05 GiB/s, vergeleken met Windows' native NVMe met 92.562 GiB/s, een verschil van ongeveer 5%. Dit wijst erop dat Linux mogelijk een klein voordeel heeft bij het verwerken van blokgroottes die groter zijn dan de indirectie-eenheden van de schijven.
De bandbreedte voor willekeurig schrijven was consistent onder zowel Linux als Windows, met name bij 64K-benchmarks. De beste en slechtste resultaten van die tests verschilden slechts met 0.05%, wat erop wijst dat alle opslagstacks het volledige potentieel van de schijven benutten.
Opvallend genoeg behaalde de Linux 6.8-kernel de overwinning in sequentiële schrijfsnelheidstests voor blokgroottes van 64 KB en 128 KB. Hoewel het verschil niet enorm was, presteerden de open-source softwarestacks in beide gevallen ongeveer 2 GiB/s beter dan de native NVMe-opslag van Windows Server.
De latentieresultaten volgden over het algemeen de doorvoertestresultaten, wat het best tot uiting kwam in het verschil in gemiddelde willekeurige leesbewerkingen. Helaas voor Tux hadden libaio en io_uring een hogere latentie, met het grootste verschil van 0.17 ms tussen Windows Server native NVMe (0.207 ms) en libaio (0.377 ms) bij 64K willekeurige leesbewerkingen.
Misschien wel de meest schokkende onthulling uit onze benchmarks is het enorme verschil in CPU-gebruik tussen Windows Server 2025 en Ubuntu Server 24.04.4 LTS. In drie van de vier benchmarks voor willekeurige en sequentiële leesbewerkingen had Windows Server native NVMe het laagste CPU-gebruik. Het meest opvallende resultaat werd gezien tijdens de benchmark voor sequentiële leesbewerkingen van 128K, waarbij Windows 27.34% minder CPU-gebruik had dan Linux.
Het CPU-gebruik van libaio en io_uring presteerde iets beter in de willekeurige en sequentiële schrijftests, maar dit was nog steeds niet voldoende om te voorkomen dat native NVMe op Windows Server in drie van de benchmarks won. Een opvallende uitzondering was het CPU-gebruik van libaio tijdens de willekeurige 4K-schrijftest, dat 45.76% van de systeem-CPU bereikte, terwijl de andere opslagstacks rond de 20% schommelden.
Winnaar, winnaar, CPU-diner
Zoals onze resultaten laten zien, presteren Windows Server en Ubuntu Server vrijwel gelijk in directe vergelijkingen bij zowel willekeurige als sequentiële prestatietests met verschillende blokgroottes. Qua bandbreedte presteerde Windows Server 2025 met native NVMe over het algemeen beter dan Linux in de meeste leestests, terwijl Linux iets betere resultaten liet zien in onze schrijftests. Onze latentiecijfers vertelden een vergelijkbaar verhaal, maar het echte hoogtepunt was de CPU-efficiëntie van Windows Server 2025 bij gebruik van native NVMe.
Microsoft heeft duidelijk veel moeite gestoken in het optimaliseren van hun nieuwste opslagstack, en hoewel deze niet altijd wint van libaio en io_uring, doet hij het zeker goed. Hoewel deze resultaten niet doorslaggevend zijn voor alle gebruikssituaties en serverconfiguraties, kunnen ze serverbeheerders helpen bij de keuze tussen een Windows- of Linux-server wanneer opslagprestaties belangrijker zijn dan compatibiliteit met het besturingssysteem.
Laat ons weten wat je van deze resultaten vindt door te reageren op onze sociale media of de SR Discord ! Had je verwacht dat Windows Server het zo goed zou doen in onze tests, of hoopte je juist op Linux? Zou je graag meer Linux-serverdistributies of -kernels getest zien? We zijn altijd benieuwd naar je feedback, en tests die door lezers worden aangevraagd, zoals deze, worden vaak onze favoriete artikelen.
Referenties
Didona, D., Pfefferle, J., Ioannou, N., Metzler, B., & Trivedi, A. (2022, 13 juni). Inzicht in moderne opslag-API's: een systematische studie van libaio, SPDK en io_uring. SYSTOR '22, 120-121. Geraadpleegd op 3 april 2026 van https://atlarge-research.com/pdfs/2022-systor-apis.pdf




Amazon