หลังจากตีพิมพ์บทความของเราเกี่ยวกับ Microsoft's opt-in native NVMe feature ใน Windows Server 2025เราได้รับคําขอจํานวนมากสําหรับการเปรียบเทียบผลการทํางานในการเก็บข้อมูลโดยตรงระหว่าง Windows Server 2025 (ที่มีการสนับสนุน NVMe เป็นพื้นเมือง) และระบบปฏิบัติการเซอร์เวอร์ที่ใช้ Linuxผู้ใช้ Redditor ที่ตื่นเต้นมากๆ ก็เลยเสนอเบียร์ให้เราทําการทดสอบด้วยเราไม่มีทางเลือกอื่นนอกจากที่จะใช้ซิวต์เบนชมาร์คเดียวกันบน Linux เพื่อให้การเปรียบเทียบหัวต่อหัวที่ผู้อ่านของเราต้องการ.
Windows Server 2025 NVMe VS SSD ความสามารถของ Linux
เมื่อนานมาแล้ว ในเวอร์ชั่น OS ที่ไกลๆ
ลินูคัสได้สนับสนุน NVMe ตั้งแต่คอร์เนลเวอร์ชั่น 33, ที่ปล่อยในเดือนมีนาคม 2012 เช่นเดียวกับนั้น, Windows Server ได้นําเสนอการสนับสนุน NVMe (ไม่เป็นพื้นเมือง, ผ่านการแปล SCSI) ตั้งแต่การปล่อย 2012 R2 ประมาณเดือนตุลาคม 2013. the debate over whether Windows or Linux delivers better storage performance still rages on—and we’re adding more data to the conversation with our benchmark results comparing the two operating systems.
เนื่องจากเรามีผลการทดสอบแล้วสําหรับ Windows Server 2025 โดยใช้ทั้งสเต็ปการเก็บข้อมูลที่ไม่ใช่พื้นเมืองและพื้นเมือง เราตัดสินใจประเมินสเต็ปการเก็บข้อมูลที่นิยมอยู่บน Linux สองตัวเพื่อการเปรียบเทียบที่เที่ยงธรรมสําหรับ FIO benchmarks ของเรา, เราใช้ libaio และ io_uring สอง API ที่ใช้กันมากที่สุดสําหรับธุรกิจการจอง ขณะที่ io_uring เป็นใหม่มากและนําเสนอการปรับปรุงมากมายสําหรับ I / Olibaio ยังคงเป็นอาหารหลักเนื่องจากความยืดหยุ่นและการใช้งานง่าย (Didona), Pfefferle, Ioannou, Metzler, & Trivedi, 2022) การแบ่งแยกทางสถาปัตยกรรมของทั้งสองสตั๊กอยู่เหนือขอบเขตของบทความนี้แต่เรากําลังให้ผลลัพธ์ที่ครบถ้วน เพื่อให้สามารถเปรียบเทียบกันโดยตรง.
ทดสอบ NVMe บน Ubuntu Server 2404.4 LTS
เราใช้แพลตฟอร์มฮาร์ดแวร์เดียวกันสําหรับการเปรียบเทียบนี้เช่นในบทความ NVMe ของ Windows Server 2025 ของเรา เพื่อให้ความสอดคล้องและการเปรียบเทียบผลงานที่แม่นยําเซอร์เวอร์มี CPU AMD EPYC 9754 128 หลัก, 768GB ของความจํา DDR5 ที่ทํางานที่ 4800 MT / s, และสิบห้า 30.72 TB Solidigm P5316 NVMe SSDs (PCIe 4.0) ที่ตั้งค่าในโหมด JBOD.
อย่างที่ระบุในบทความก่อนหน้านี้ของเรา Solidigm P5316 มีขนาดหน่วยอัตราต่อเนื่อง 64 กิโลไบท ซึ่งมักส่งผลให้มีผลการเขียนที่ต่ํากว่าที่คาดหมายสําหรับขนาดบล็อกขนาดเล็ก (เช่นการทดสอบ 4K)เพื่อให้ความเห็นที่ครบวงจรเราทดสอบขนาดบล็อก 4K, 64K และ 128K โดยวัดการอ่านและการเขียน
เราเลือก Ubuntu Server 2404.4 LTS เป็นตัวแทนของ Linux ของเราเนื่องจากความนิยมและสถานะการสนับสนุนระยะยาว (LTS) ของมันเวอร์ชั่นเนอร์เนลนี้อาจเป็นส่วนใหญ่ของการติดตั้งเซอร์เวอร์ลินูคัสในโลกจริง.
จุดเด่น
-
Windows Server 2025 (native NVMe) ทํางานได้ดีกว่า Ubuntu ใน 3 จาก 4 ปัจจัยการอ่าน
-
Windows Server แสดงการใช้งาน CPU ที่ต่ํากว่าตลอดเวลาในช่วงการทดสอบส่วนใหญ่
-
อูบนูตู เซอร์เวอร์ 2404.4 LTS ชนะใน 3 จาก 4 การบันทึกผลประกอบการ
ผลการเทียบ
ผลการอ่านแบบสุ่ม
|
เมทริก
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
|---|---|---|---|---|---|---|---|---|
|
ขนาดบล็อก
|
4K แบบสุ่ม
|
64K แบบสุ่ม
|
||||||
|
ความกว้างของแบนด์เบด (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
|
|
อัตราการอ่อนเวลาเฉลี่ย (ms)
|
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
|
ผลการอ่านเรียงลําดับ
|
เมทริก
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
|---|---|---|---|---|---|---|---|---|
|
ขนาดบล็อก
|
64K ตามลําดับ
|
128K ตามลําดับ
|
||||||
|
ความกว้างของแบนด์เบด (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
|
|
อัตราการอ่อนเวลาเฉลี่ย (ms)
|
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
|
การทํางานการเขียนแบบสุ่ม
|
เมทริก
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
|---|---|---|---|---|---|---|---|---|
|
ขนาดบล็อก
|
4K แบบสุ่ม
|
64K แบบสุ่ม
|
||||||
|
ความกว้างของแบนด์เบด (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
|
|
อัตราการอ่อนเวลาเฉลี่ย (ms)
|
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
|
ความสามารถในการเขียนแบบเรียงลําดับ
|
เมทริก
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
Windows ไม่เป็นพื้นเมือง
|
Windows Native
|
ลินูคัส ไลบายโอ
|
ลินูคัส io_uring
|
|---|---|---|---|---|---|---|---|---|
|
ขนาดบล็อก
|
64K ตามลําดับ
|
128K ตามลําดับ
|
||||||
|
ความกว้างของแบนด์เบด (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
|
|
อัตราการอ่อนเวลาเฉลี่ย (ms)
|
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
|
หมายเหตุ: ผลการ IOPS ของ Linux ของเราถูกกลมเป็นพันอันที่ใกล้ที่สุด เนื่องจากความแตกต่างในการรายงาน FIO ระหว่าง Windows Server 2025 และ Ubuntu Server 24.04.4 LTS ผลการใช้แบนด์วิทต์ ความช้า และ CPU ถูกกลมกลมอย่างต่อเนื่องในทั้งสองแพลตฟอร์ม
จํานวนไม่โกหก
การพิจารณาของเราทําให้เห็นชัดว่า Ubuntu ไม่เหนือกว่า Windows ในทุกหมวดหมู่ ในขณะที่ libaio และ io_uring ส่งผลงานที่ดีในการทดสอบอ่านสุ่มพวกเขาไม่สามารถเทียบได้กับผลงานของ NVMe Stack ของ Microsoftคาร์เนล Windows NT เก่งกว่าคาร์เนล Linux ประมาณ 17% ในการทดสอบ 64K ที่อ่านสุ่มของเรา โดย NVMe ของ Windows ที่เป็นพื้นเมืองได้ 91.165 GiB/s เมื่อเทียบกับ 77.7 GiB/s ที่ดีที่สุดของ io_uring
อย่างไรก็ตาม ลินูคัสก็ไม่ได้ขาดความสําเร็จของตัวเอง. Ubuntu Server เกิน Windows Server ไปอย่างแคบในเรื่องของการพิสูจน์ความสามารถในการอ่าน: การทดสอบ 128K ตามลําดับ,เมื่อเทียบกับ NVMe ของ Windows ที่ 92.562 GiB/s ครับ ความแตกต่างประมาณ 5% ซึ่งชี้ให้เห็นว่า Linux อาจมีข้อดีเล็กน้อยในการจัดการขนาดบล็อกที่ใหญ่กว่าหน่วยดิสก์
ความกว้างแบนด์วิทในการเขียนแบบสุ่มมีความสอดคล้องในระบบปฏิบัติการทั้งสองอย่าง โดยเฉพาะในปริมาณการพิจารณา 64K ผลดีที่สุดและผลแย่ที่สุดในการทดสอบเหล่านี้แตกต่างกันเพียง 0.05%แสดงให้เห็นว่า ฐานเก็บของทั้งหมดสามารถใช้ประโยชน์เต็มที่จากความสามารถของไดรฟ์.
ที่น่าสนใจคือ คาร์เนล Linux 6.8 ได้ชนะการทดสอบความกว้างแดนในการเขียนแบบเรียงลําดับ สําหรับขนาดบล็อก 64K และ 128Kสตั๊กความจดจําที่เปิดแหล่งมีประสิทธิภาพมากกว่า NVMe ของ Windows Server โดยประมาณ 2 GiB/s ในทั้งสองกรณี.
ผลลัพธ์ความช้าโดยทั่วไปสะท้อนผลการทํางานของผ่าน, โดยเฉพาะอย่างยิ่งในค่าเฉลี่ยการอ่านสุ่ม.กับช่องว่างที่ใหญ่ที่สุดที่เห็นในการอ่านสุ่ม 64K: NVMe ของ Windows Server มีความช้าเฉลี่ย 0.207 ms เมื่อเทียบกับ libaio's 0.377 ms ความแตกต่าง 0.17 ms
บางทีการค้นพบที่น่าประหลาดใจที่สุดจากมาตรฐานของเรา คือความแตกต่างที่สําคัญในการใช้ CPU ระหว่าง Windows Server 2025 และ Ubuntu Server 2404.4 LTS. ใน 3 จาก 4 มาตรฐานการอ่านสุ่มและลําดับ, NVMe ของ Windows Server มีการใช้ CPU ที่ต่ําที่สุด. ผลที่น่าประทับใจที่สุดคือการทดสอบการอ่านลําดับ 128K, ที่ Windows ใช้ 27.CPU น้อยกว่า Linux 34%.
Libaio และ io_uring ผลงานดีกว่าเล็กน้อยในการทดสอบการเขียนแบบสุ่มและลําดับ แต่ไม่ดีพอที่จะป้องกัน NVMe ของ Windows Server จากการชนะ 3 จาก 4 การเขียน benchmarks การใช้งาน CPUยกเว้นที่สําคัญคือก



