Как проверить скорость диска?

IT-специалисту часто приходится сталкиваться с ситуацией, когда необходимо оценить производительность дисковой подсистемы. В таких случаях полезно иметь под рукой утилиту, которая оценочно проверит скорость диска или любого другого подключенного накопителя. Но насколько достоверными являются бенчмарки, полученные если и не тривиальной, то достаточно простенькой утилитой? Сегодня можно утверждать, что скорость копирования файлов, измеренная с применением Non-Blocking I/O технологии, вполне соответствует самым взыскательным ожиданиям.

Как проверить скорость диска с помощью утилиты NIOBench?

Предлагаем для ознакомления программный продукт NIOBench, разработанный нашими коллегами из IC Book Labs и предназначенный для оценки производительности дисковых операций. Утилита NIOBench выполнена в виде Java-приложения, что добавляет ей шарма, так как снижает зависимость от среды, в которой она запущена. Используемая коллекция прикладных программных интерфейсов java.nio реализует эффективную модель не блокирующих файловых операций. Выполнение одним оператором сравнительно сложных задач, таких как копирование файла, позволяет нивелировать снижение производительности, связанное с интерпретацией команд виртуальной Java-машиной, а одновременный запуск нескольких запросов создает потенциальную возможность для NCQ-оптимизации, так как если контроллеру доступно больше информации о командах, которые предстоит обработать, сортировку их очереди можно выполнить более эффективно.

Зачем бенчмаркам неблокирующий обмен?

Вполне очевидно, что рост тактовой частоты локальных шин ввода-вывода не может продолжаться до бесконечности. Это значит, что для интенсификации вычислительного процесса на первый план выходят альтернативные методы повышения производительности. Одним из них является параллелизм операций. Причем, речь может идти не только о многопроцессорной и(или) многопотоковой обработке в рамках мультипроцессорной модели SMP, но и о параллельном функционировании центрального процессора и bus-master устройства — интеллектуального процессора ввода-вывода (например, дисковых контроллеров Advanced Host Controller Interface или Non-Volatile Memory interface for PCIe).

Реализация параллелизма применительно к дисковой подсистеме сводится к несложному принципу: ожидая завершения дисковой операции центральный процессор не должен простаивать, а может запускать другие задачи, не связанные с результатом текущего процесса.

Вспомним, что во времена 16-битных однозадачных систем, снабженных Legacy BIOS, процедуры дискового сервиса INT 13h «обречённо» отрабатывали пустой цикл в ожидании запроса на прерывание от дискового контроллера. Это пример блокирующего или синхронного ввода-вывода. Координация параллельного выполнения нескольких задач тогда считалась достаточно сложным делом, во всяком случае, применительно к персональной платформе.

Зачем бенчмаркам неблокирующий обмен?

При неблокирующем или асинхронным выполнении, центральный процессор передает задание контроллеру ввода-вывода и освобождается для новых задач, например, для вычислений или других операций ввода-вывода. Контроллер ввода-вывода, выполняя полученный запрос, функционирует асинхронно, отчитываясь перед CPU о полученных результатах. Описанный принцип, с рядом оговорок, учитывающих особенности реализации Java Virtual Machine, лежит в основе методов класса java.nio, который, в свою очередь, используется в утилите NIOBench для построения бенчмарок накопителей.

Интерфейс NIOBench

Запустив утилиту NIOBench, пользователь должен выбрать в поле Path доступный операционной системе накопитель, с которым начнет работать утилита. Это означает, что в каталоге, на который указывает выбранный путь, будут созданы временные файлы (File) заданного размера и в нужном количестве (Count).

Интерфейс утилиты тестирования накопителей NIOBench

Опция Data определяет содержимое копируемых файлов, что может быть существенно при тестировании SSD-накопителей с внутренней архивацией данных.

NIOBench предупреждает, что используемый процессор не умеет по команде RDRAND генерировать случайные числа

В режиме Zeroes файлы заполняются нулями, режим Software RNG (Random Numbers Generator) использует программный генератор псевдослучайных чисел. Режим Hardware RNG использует аппаратный генератор на основе машинной инструкции RDRAND. Этот режим доступен опционально, в зависимости от возможностей процессора и наличия нативной библиотеки для данной операционной системы.

Таблица результатов, расположенная в верхней части окна, отображает среднюю, минимальную и максимальную скорость копирования файла в мегабайтах в секунду. Вторая строка таблицы (Selected MBPS) отображает специальную выборку, при которой игнорируются 1/3 результатов, максимально далеких от среднего арифметического значения для заданного количества файлов.

Отметим, что для лучшей повторяемости и достоверного тестирования накопителя, желательно использовать сравнительно большие файлы (1024 MB), в то время как при небольших размерах файлов (1-10 MB) тестируется дисковый кэш, эффективность реализации API в данной операционной системе и виртуальной машины Java.


28.08.2016
Яндекс.Метрика Рейтинг@Mail.ru