
Прекрасная возможность: с помощью 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. Полученные таким образом метрики будут оценкой сверху, что и станет лучшей характеристикой тестируемого объекта.
Результаты тестирования
Текстовый рапорт испытаний в среде Linux
Текстовый рапорт испытаний в среде Windows
Резюме
Выполняя тест на терабайтных накопителях в свежеотформатированном разделе, мы недеялись на минимизацию влияния фрагментации файлов и технологии ZBR (Zone Bit Recording) на достоверность бенчмарок. Приняв это допущение можно считать, что сильной стороной Linux является технология отложенной записи, в то время, как Windows отличилась на чтении.
Осторожно предположим, что Microsoft эффективно минимизирует количество транзитных операций пересылки данных между буферами. Нелишне, правда, вспомнить, что участниками состязания являются не только операционные системы, но и Java-машины, и реализация в них методов дискового ввода-вывода.
Благодарности
Спасибо компании Entry за оборудование, предоставленное для экспериментов. Без ее помощи этой статьи бы не было.