Windows против Ubuntu в дисковых операциях

25 Сен 2016

Windows против Ubuntu в дисковых операциях

Прекрасная возможность: с помощью java-приложения NIOBench за­ме­рить производительность дисковой подсистемы в двух средах незави­си­мо друг от друга — в Linux Ubuntu и в Microsoft Windows. Для этого мы возьмем платформу ASUS P10S-i с объемом оперативной памяти 16 ГБ и цент­ральным процессором Intel Xeon E3-1230 v5. Его характеристики в нашем деле не самый важный аргумент, но не будем забывать, что час­то­та чипа не менее 3,4 ГГц, а на кристалле есть 8 МБ кэш-памяти, ко­то­рая оказывает влияние на производительность дисковых операций.

Несмотря на серверные амбиции платформы для тестирования выберем популярные 64-битные ОС: Ubuntu 16.04 LTS и корпоративную Microsoft Windows 10. Каждую их них установим на свой жесткий магнитный диск: для этого нам подойдут терабайтные HGST Ultrastar A7K2000. Все готово для того чтобы ответить на давно интересующий вопрос: чьи аргументы окажутся самыми убедительными?

Условия тестирования

Ключевым моментом в выборе параметров для оценки производительности дисковой подсистемы является объем оперативной памяти. Будем акцентировать внимание на выборе большеразмерных тестовых паттернов (1024 МБ), чтобы избежать кэширования данных средствами Java-машины и операционной системы. Если за один вызов про­граммного интерфейса обрабатывается больше данных, то такой тест в большей степени зависит от на­ко­пи­те­ля и в меньшей — от среды его обитания. Большими паттернами мы тестируем накопитель, а используя малые рис­куем получить результат, завязанный на особенности платформы и ее экосистему.

Закрыть вопрос с кэшированием призван параметр Count — количество итераций записи, чтения и копирования. Умножая его на размер паттерна, мы можем с уверенностью перекрыть объем установленной оперативной памяти (в нашем примере 16 ГБ RAM существенно меньше 50 ГБ тестовых транзакций). Для успешного завершения про­це­ду­ры нужно предусмотреть, чтобы на тестируемом носителе было вдвое больше свободного пространства (не за­бы­ва­ем про копирование). Это один из факторов, влияющих на метрики сменных носителей небольшого объема (USB-накопители, SD-карты и т.п.), снимаемые на платформах, щедро экипированными ОЗУ. Технология бенч­ма­рок в этом случае предполагает другие сценарии оценки производительности.

В связи с тем, что испытания NIOBench выполняются на магнитных дисках, безболезненно можно использовать заполнение паттернов нулями. На твердотельным накопителях стоит контролировать способность их конт­рол­ле­ров сжимать данные на лету, для чего в поле Data можно выбрать программную или аппаратную генерацию за­пол­не­ния паттерна случайными числами.

Съем бенчмарок будем выполнять в самом производительном режиме небло­ки­ру­ю­щего ввода-вывода, об­ус­лов­ленного применением в java-приложении NIOBench фреймворка NIO. Полученные таким образом метрики будут оценкой сверху, что и станет лучшей ха­рак­те­рис­тикой тестируемого объекта.

Результаты тестирования

Оценка производительности дисковых операциях в Ubuntu
Текстовый рапорт испытаний в среде Linux

Оценка производительности дисковых операциях в Windows
Текстовый рапорт испытаний в среде Windows

Резюме

Выполняя тест на терабайтных накопителях в свежеотформатированном разделе, мы недеялись на минимизацию влияния фрагментации файлов и технологии ZBR (Zone Bit Recording) на достоверность бенчмарок. Приняв это допущение можно считать, что сильной стороной Linux является технология отложенной записи, в то время, как Windows отличилась на чтении.

Осторожно предположим, что Microsoft эффективно минимизирует количество транзитных операций пересылки данных между буферами. Нелишне, правда, вспомнить, что участниками состязания являются не только опера­ци­он­ные системы, но и Java-машины, и реализация в них методов дискового ввода-вывода.

Благодарности

Спасибо компании Entry за оборудование, предоставленное для экспериментов. Без ее помощи этой статьи бы не было.