
Производительность NVMe-накопителей: сравнение Windows Server 2025 и Ubuntu Server 24.04.4 LTS
Содержание
После публикации материала о включаемой вручную прямой поддержке NVMe в Windows Server 2025 возникает следующий вопрос: как такая конфигурация выглядит на фоне серверной ОС на базе Linux при сопоставимых нагрузках хранения. Для инфраструктурных проектов это сравнение важно не само по себе, а как ориентир при выборе платформы под высокопроизводительные NVMe-массивы, базы данных, виртуализацию и другие задачи с интенсивным вводом-выводом. Поэтому те же тестовые сценарии были выполнены в Linux-среде, чтобы оценить различия на одинаковой аппаратной базе.
Долгая история поддержки NVMe в серверных ОС
Поддержка NVMe в Linux появилась еще в ядре 3.3, выпущенном в марте 2012 года. В Windows Server работа с NVMe доступна начиная с Windows Server 2012 R2, где такие накопители обслуживались не напрямую, а через преобразование команд SCSI. Спустя более десяти лет вопрос о том, какая платформа эффективнее работает с хранилищем - Windows Server или Linux, остается предметом технических дискуссий. Поэтому сравнение дополнено результатами тестов, которые позволяют оценить различия на сценариях ввода-вывода.
Поскольку для Windows Server 2025 уже были получены результаты как с классическим, так и с новым прямым контуром работы с NVMe, для Linux также были выбраны два варианта обработки операций хранения. В тестах FIO использовались libaio и io_uring - два распространенных интерфейса для операций ввода-вывода. io_uring относится к более новой модели и дает больше возможностей для асинхронных операций, тогда как libaio по-прежнему широко применяется благодаря гибкости и простоте использования.
Тестирование NVMe на Ubuntu Server 24.04.4 LTS
Для сравнения использовалась та же серверная платформа, что и в предыдущем материале о прямой поддержке NVMe в Windows Server 2025. Чтобы обеспечить высокую пропускную способность и сопоставимость результатов, конфигурация включала два 128-ядерных процессора AMD EPYC 9754, 768 ГБ памяти DDR5 4800 MT/s и пятнадцать NVMe-накопителей Solidigm P5316 емкостью 30,72 ТБ с интерфейсом PCIe 4.0, подключенных в режиме JBOD.
Как отмечалось в предыдущей статье, у Solidigm P5316 размер внутреннего блока адресации составляет 64 КБ. Из-за этого производительность записи на меньших блоках, например в тестах 4 КБ, может быть ниже ожидаемой. Поэтому были повторно использованы разные профили нагрузки с размерами блоков 4 КБ, 64 КБ и 128 КБ - это позволяет шире оценить поведение системы при операциях чтения и записи.
В качестве Linux-платформы была выбрана Ubuntu Server 24.04.4 LTS - распространенный серверный дистрибутив с долгосрочной поддержкой. При интерпретации результатов важно учитывать используемый стек ядра: базовая ветка Ubuntu 24.04 LTS связана с Linux 6.8, тогда как для актуальных точечных выпусков 24.04 применяется и аппаратно-ориентированный HWE-стек. Поэтому для повторяемости тестов версия ядра должна быть зафиксирована отдельно.
Случайное чтение
|
Метрика |
Windows - классический режим, 4 КБ |
Windows - прямая поддержка NVMe, 4 КБ |
Linux libaio, 4 КБ |
Linux io_uring, 4 КБ |
Windows - классический режим, 64 КБ |
Windows - прямая поддержка NVMe, 64 КБ |
Linux libaio, 64 КБ |
Linux io_uring, 64 КБ |
|---|---|---|---|---|---|---|---|---|
|
Пропускная способность, ГиБ/с |
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 |
|
Средняя задержка, мс |
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 - классический режим, 64 КБ |
Windows - прямая поддержка NVMe, 64 КБ |
Linux libaio, 64 КБ |
Linux io_uring, 64 КБ |
Windows - классический режим, 128 КБ |
Windows - прямая поддержка NVMe, 128 КБ |
Linux libaio, 128 КБ |
Linux io_uring, 128 КБ |
|---|---|---|---|---|---|---|---|---|
|
Пропускная способность, ГиБ/с |
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 |
|
Средняя задержка, мс |
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 - классический режим, 4 КБ |
Windows - прямая поддержка NVMe, 4 КБ |
Linux libaio, 4 КБ |
Linux io_uring, 4 КБ |
Windows - классический режим, 64 КБ |
Windows - прямая поддержка NVMe, 64 КБ |
Linux libaio, 64 КБ |
Linux io_uring, 64 КБ |
|---|---|---|---|---|---|---|---|---|
|
Пропускная способность, ГиБ/с |
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 |
|
Средняя задержка, мс |
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 - классический режим, 64 КБ |
Windows - прямая поддержка NVMe, 64 КБ |
Linux libaio, 64 КБ |
Linux io_uring, 64 КБ |
Windows - классический режим, 128 КБ |
Windows - прямая поддержка NVMe, 128 КБ |
Linux libaio, 128 КБ |
Linux io_uring, 128 КБ |
|---|---|---|---|---|---|---|---|---|
|
Пропускная способность, ГиБ/с |
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 |
|
Средняя задержка, мс |
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.4 |
47.33 |
61.49 |
44.27 |
Примечание: результаты Linux по операциям ввода-вывода в секунду (IOPS) округлены до ближайшей тысячи из-за различий в представлении данных FIO между Windows Server 2025 и Ubuntu Server 24.04.4 LTS. Показатели пропускной способности, средней задержки и загрузки процессора округлены по единому правилу для обеих платформ.
Результаты показывают реальную картину
Уже по первым данным видно, что Ubuntu Server не превосходит Windows Server во всех сценариях. В тестах пропускной способности при случайном чтении libaio и io_uring показали сильные результаты, однако не достигли уровня прямого контура работы с NVMe в Windows Server 2025. В тесте случайного чтения блоками 64 КБ конфигурация Windows Server с прямой поддержкой NVMe оказалась примерно на 17% быстрее Linux-варианта: 91,165 ГиБ/с против лучшего результата io_uring на уровне 77,7 ГиБ/с.
При этом результаты не выглядят односторонними. В одном из тестов чтения Ubuntu Server немного опередила Windows Server - в сценарии последовательного чтения блоками 128 КБ. Лучший результат показал Linux libaio: 97,05 ГиБ/с против 92,562 ГиБ/с у Windows Server с прямой поддержкой NVMe, разница составила около 5%. Это может указывать на небольшое преимущество Linux при работе с размерами блоков, превышающими внутренний блок адресации накопителей.
Пропускная способность при случайной записи оказалась близкой на Linux и Windows Server, особенно в тестах с блоком 64 КБ. Разница между лучшим и худшим результатом в этом сценарии составила всего около 0,05%, что указывает на практически одинаковую реализацию возможностей накопителей во всех контурах обработки операций хранения.
В тестах последовательной записи картина отличалась. В сценариях с блоками 64 КБ и 128 КБ конфигурация на Linux 6.8 показала преимущество по пропускной способности. Разрыв не был радикальным, однако программные контуры с открытым исходным кодом опередили прямую поддержку NVMe в Windows Server примерно на 2 ГиБ/с в обоих случаях.
Результаты по задержке в целом повторили картину тестов пропускной способности, особенно заметно это видно на средних значениях при случайном чтении. В этом сценарии libaio и io_uring показали более высокую задержку. Наибольший разрыв был зафиксирован в тесте случайного чтения блоками 64 КБ: 0,207 мс у Windows Server с прямой поддержкой NVMe против 0,377 мс у libaio.
Одним из самых заметных результатов тестирования стала разница в загрузке процессора между Windows Server 2025 и Ubuntu Server 24.04.4 LTS. В трех из четырех тестов случайного и последовательного чтения Windows Server с прямой поддержкой NVMe показал наименьшую загрузку процессора. Наиболее показательный результат был зафиксирован при последовательном чтении блоками 128 КБ: загрузка процессора у Windows Server была на 27,34 процентного пункта ниже, чем у Linux io_uring.
В тестах случайной и последовательной записи libaio и io_uring выглядели лучше по загрузке процессора, чем в сценариях чтения. Однако этого оказалось недостаточно, чтобы обойти прямую поддержку NVMe в Windows Server: в трех тестах она показала наименьшую нагрузку на процессор. Заметным исключением стал libaio в тесте случайной записи блоками 4 КБ - загрузка достигла 45,76% ресурсов системы, тогда как остальные контуры обработки операций хранения находились около отметки 20%.
Ключевые наблюдения:
-
Windows Server 2025 с прямой поддержкой NVMe показал преимущество в трех из четырех тестов производительности чтения.
-
В большинстве тестов для Windows Server наблюдалась более низкая загрузка процессора.
-
Ubuntu Server 24.04.4 LTS показала преимущество в трех из четырех тестов производительности записи.
Главный вывод - эффективность использования процессора
Результаты показывают, что Windows Server и Ubuntu Server демонстрируют близкий уровень производительности при прямом сравнении в сценариях случайного и последовательного ввода-вывода с разными размерами блоков. По пропускной способности Windows Server 2025 с прямой поддержкой NVMe чаще показывал преимущество в тестах чтения, тогда как Linux немного лучше выглядел в тестах записи. Показатели задержки в целом повторили эту картину, но главным отличием стала более высокая эффективность Windows Server 2025 по загрузке процессора при использовании прямого NVMe-контура.
Microsoft заметно доработала новый контур работы с хранилищем в Windows Server 2025. Он не во всех сценариях опережает libaio и io_uring, но показывает конкурентные результаты и особенно уверенно выглядит по расходу процессорных ресурсов. Эти данные нельзя считать универсальными для всех серверных конфигураций и типов нагрузок, однако они могут быть полезны при выборе между Windows Server и Linux в проектах, где производительность подсистемы хранения важнее, чем совместимость с конкретной операционной средой.
StorageReview, ITELON
Вам может быть интересно


Настройка Windows Server 2025 с полноценной поддержкой NVMe - новый уровень производительности подсистемы хранения

Обновляться ли до Windows Server 2025: сравнение с Windows Server 2022
Подпишитесь на новости
Обратитесь к экспертам компании Itelon



Оцените статью и добавьте комментарий — будьте первым
Спасибо!
Комментарий успешно отправлен на модерацию! После модерации комментарий будет опубликован в ближайшее время!