Каталог
ZV
ездный б-р, 19
+7 (495) 974-3333 +7 (495) 974-3333 Выбрать город: Москва
Подождите...
Получить токен
Соединиться
X
Сюда
Туда
x
Не выбрано товаров для сравнения
x
Корзина пуста
Итого: 
Оформить заказ
Поделиться
Открыть корзину
Калькуляция
Очистить корзину
x
Чат с оператором
Отправить
Мои заказы
Магазины
Каталог
Сравнения
Корзина
Магазины Доставка по РФ
Город
Область
Ваш город - ?
От выбранного города зависят цены, наличие товара и
способы доставки

Четверг, 9 апреля 2026 14:45

Сравнение производительности NVMe: Windows Server 2025 vs. Ubuntu Server 24.04.4 LTS

После того как мы сделали обзор нативной поддержки NVMe от Microsoft, реализованной в операционной системе Windows Server 2025, многие пользователи попросили нас провести непосредственное сравнение производительности NVMe накопителей под управлением ОС Windows Server 2025 с нативной поддержкой NVMe и под управлением серверной ОС на базе Linux. Один энтузиаст с Reddit даже пообещал поставить нам пива за этот обзор. За неимением других вариантов, мы решили провести на Linux те же самые тесты.

nvme-1

Давным-давно, в старой-престарой версии операционной системы

Ядро Linux поддерживает NVMe начиная с версии 3.3, выпущенной в марте 2012 года. Примерно с того же времени протокол поддерживается системой Windows Server (не нативно, а посредством преобразования команд NVMe в команды SCSI) – начиная с версии 2012 R2, вышедшей в октябре 2013 года. И спустя более десяти лет пользователи продолжают спорить, какая ОС – Windows или Linux – более эффективно управляет накопителями. Поэтому мы тоже решили подкинуть материала для дискуссий и предлагаем сравнить результаты бенчмарков.

Поскольку мы тестировали Windows Server 2025, используя как нативный, так и не-нативный стек для накопителей, то, соответственно, для оценки взяли также два стека на Linux. Для бенчмарков FIO мы использовали libaio и io_uring – два наиболее популярных API для транзакций подсистемы хранения данных. Хотя io_uring – значительно новее и предлагает многочисленные улучшения в части асинхронного ввода/вывода, libaio остается широко популярным благодаря своей гибкости и простоте использования [см. Didona, D., Pfefferle, J., Ioannou, N., Metzler, B., & Trivedi, A. (2022, June 13). Understanding Modern Storage APIs: A systematic study of libaio, SPDK, and io_uring. SYSTOR ’22, 120-121.]. Всесторонний обзор архитектуры обоих стеков выходит за рамки данной статьи, но мы приводим здесь результаты для сравнения их по эффективности с нативным и не-нативным стеками Windows Server.

Тестирование NVMe на конфигурации под Ubuntu Server 24.04.4 LTS

Все варианты программных стеков для NVMe тестировались на одной и той же аппаратной серверной платформе. Чтобы гарантировать максимум пропускной способности, мы использовали систему с двумя 128-ядерными процессорами AMD EPYC 9754, 768 ГБ памяти DDR5-4800 MT/с и 15 дисками Solidigm P5316 30.72 TB NVMe SSD PCIe 4.0 в конфигурации JBOD.

Как мы уже отмечали в предыдущей статье, размер логического блока данных в SSD Solidigm P5316 составляет 64 килобайта, и это значит, что скорость записи с меньшими размерами блока (например, в тестах с размером блока 4 КБ, или 4K) часто бывает ниже ожидаемой. Как обычно, мы запускали тесты с различными размерами блоков данных – 4K, 64K и 128K – чтобы получить результаты для широкого диапазона сценариев чтения/ записи.

В качестве примера ОС Linux мы выбрали версию Ubuntu Server 24.04.4 LTS, ввиду ее популярности и долгосрочной поддержки. По умолчанию она работает на ядре Linux 6.8, которое не является ни самым новым, ни самым продвинутым, но, вероятно, представляет большую часть Linux-конфигураций в мире.

Общие результаты

  • Нативная поддержка NVMe в Windows Server 2025 побеждает в трех из четырех тестах на скорость чтения.
  • В большинстве тестов под Windows Server наблюдалось меньшее задействование ресурсов CPU.
  • Ubuntu Server 24.04.4 LTS побеждает в трех из четырех тестах на скорость записи.

Тест Случайное чтение 4K Случайное чтение 64K
Метрика Windows Non-Native Windows Native Linux libaio Linux io_uring Windows Non-Native Windows Native Linux libaio Linux io_uring
Пропускная способность, ГиБ/с 6.1 10.058 9.198 9.504 74.291 91.165 77.517 77.7
IOPS 1598959 2636516 2411000 2491000 1217176 1493637 1270000 1273000
Средняя задержка, мс 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 Non-Native Windows Native Linux libaio Linux io_uring Windows Non-Native Windows Native Linux libaio Linux io_uring
Пропускная способность, ГиБ/с 35.596 35.623 31.867 31.433 86.791 92.562 97.05 97
IOPS 583192 583638 522000 515000 710978 758252 795000 795000
Средняя задержка, мс 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 Non-Native Windows Native Linux libaio Linux io_uring Windows Non-Native Windows Native Linux libaio Linux io_uring
Пропускная способность, ГиБ/с 1.803 1.756 1.876 1.815 7.654 7.655 7.652 7.651
IOPS 472725 460383 492000 476000 125391 125406 125000 125000
Средняя задержка, мс 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 Non-Native Windows Native Linux libaio Linux io_uring Windows Non-Native Windows Native Linux libaio Linux io_uring
Пропускная способность, ГиБ/с 44.67 50.087 52.283 52.25 50.477 50.079 52 52.083
IOPS 731859 820603 856000 856000 413495 410232 426000 427000
Средняя задержка, мс 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-стека Microsoft. В тестах на случайное чтение 64K ядро Windows NT обгоняет ядро Linux примерно на 17%, с результатом нативного NVMe-стека 91.165 ГиБ/с против лучшего результата io_uring 77.7 ГиБ/с.

2

Однако для банды альтернативщиков Торвальдса еще не все потеряно. Ubuntu Server чуть-чуть опережает Windows Server в одном из тестовых сценариев чтения: это последовательное чтение 128K. Здесь лучший результат принадлежит Linux libaio – 97.05 ГиБ/с против 92.562 ГиБ/с нативного NVMe-стека Windows, преимущество составляет около 5%. Это показывает, что Linux может удерживать минимальное преимущество, когда размер блоков чтения больше, чем размер логического блока данных в SSD.

3

Пропускная способность случайной записи под Linux и под Windows практически одинакова, особенно в тестах 64K. В этих тестах разница между лучшим и худшим результатом составляет всего 0.05%, и это показывает, что все стеки для NVMe полностью реализуют потенциал дисков.

Интересно, что ядро Linux 6.8 претендует на победу в последовательном чтении с размером блоков 64K и 128K. Хотя разница невелика, в обоих тестах программные стеки с открытым исходным кодом превосходят нативный NVMe-стек Windows Server примерно на 2 ГиБ/с.

4

Показатели задержки в целом повторяют тренд пропускной способности, что лучше всего видно на примере результатов случайного чтения. К сожалению для Тукса, libaio и io_uring дают более высокую задержку, с наибольшей разницей 0.17 мс в тесте на случайное чтение 64K: 0.207 мс нативного NVMe-стека Windows Server против 0.377 мс libaio.

5

Возможно, самое впечатляющее откровение этих бенчмарков – это солидная разница в загрузке CPU стеками Windows Server 2025 и Ubuntu Server 24.04.4 LTS. В трех из четырех тестов на случайное и последовательное чтение нативный NVMe-стек Windows Server меньше всего нагружает процессор. Самую заметную разницу мы видим в тесте на последовательное чтение 128K, где Windows использует на 27.34% меньше ресурсов CPU, чем Linux.

6

7

Немного лучшие с точки зрения загрузки процессора результаты libaio и io_uring демонстрируют в тестах на случайную и последовательную запись, но этого недостаточно, чтобы помешать нативному NVMe-стеку Windows Server победить в трех из этих бенчмарков. Заметным исключением из этого ряда стал результат libaio в тесте на случайную запись 4K – задействование 45.76% системных ресурсов CPU, в то время как другие стеки использовали около 20%.

8

Победителя определяет CPU

Как показывают наши результаты, Windows Server и Ubuntu Server обеспечивают достаточно близкую производительность в тестах со случайным и последовательным доступом с различными размерами блоков данных. В части пропускной способности Windows Server 2025 с нативной поддержкой NVMe в целом превосходит Linux в большинстве тестов на чтение, в то время как Linux отвечает немного лучшими результатами в тестах на запись. Показатели задержки дают похожую картину, но действительно значительное достижение Windows Server 2025 – это более эффективное использование ресурсов CPU нативным NVMe-стеком.

9

Microsoft очевидно приложила усилия к тому, чтобы сделать свой новейший стек для накопителей лучшим, и, хотя он не всегда побеждает libaio и io_uring, общий счет – в пользу Windows Server. Эти результаты, конечно, не охватывают все пользовательские сценарии и серверные конфигурации, но они могут помочь администраторам принять решение о развертывании серверов под Windows или под Linux, когда производительность накопителей имеет более высокий приоритет, чем совместимость ОС.