legal note
IC Book © 2001

hardware
software

support
buy

Home page
Утилита NIOBench, предназначеннаяе для оценки производительности дисковых операций , v0.42






Software

Benchmarks

NIOBench



Функциональные возможности модуля Serial

Утилита NIOBench


Утилита NIOBench разработана специально для получения метрик про­из­во­ди­тель­ности mass storage устройств независимо от интерфейса подключения, в том числе измерения скорости чтения, записи и копирования файлов.

Еще один фактор универсальности утилиты NIOBench обеспечивается кросс-платформенной совместимостью кода утилиты, написанной на языке про­грам­мирования Java и представленной в виде выполняемого JAR-архива. На Java созданы все процедуры верхнего уровня, в частности — пользовательский ин­тер­фейс, а также существенная часть сценария взаимодействия с подсистемой хра­не­ния данных. Для работы с оборудованием и выполнения критичных по скорости операций, используются ассемблерные модули, подключаемые посредством JNI (Java Native Interface). Именно так подключены библиотеки поддержки генератора случайных чисел, использующие машинную инструкцию RDRAND.

Почему Java NIO?
Почему Java NIO?

Применение фреймворка и одноименного Java-пакета NIO является исключением из выше изложенной концепции разделения обязанностей и своеобразным мостом между Java-приложением и нативными ОС API дискового ввода-вывода. Для обеспечения неблокирующего ввода-вывода он получает на вход достаточно сложные задания, например, копирование файла, выполняемое одним оператором java-кода, FileChannel.transferTo(...).

Функции данного класса способны оптимальным образом взаимодействовать с платформой. Это было бы невозможно, если бы процедура копирования файла была разделена на ряд простых задач, каждая из которых представлена отдельным java-оператором.

Важно, что весь процесс копирования обслуживается нативным кодом, а не последовательностью команд java байт-кода. Это свойство фреймворка NIO, не менее важное, чем неблокируемость. Фреймворк NIO достаточно популярен и многим специалистам интересны его возможности в плане производительности, несмотря на понимание того факта, что ассемблерный код эффективнее по производительности, хотя и более трудоемок в разработке и отладке.

Особенности получения бенчмарок
Особенности получения бенчмарок

В силу того, что NIOBench выполняется в среде всех операционных систем, где есть поддержка JRE, как обычная пользовательская задача (без привилегий), а также наличия большого количества асинхронных событий в работе тестовых платформ, результаты измерений обрабатываются специальным алгоритмом. Он игнорирует приблизительно треть значений, максимально отстоящих от среднего арифметического всех результатов. Для полной картины, наряду с усредненными (строки selected), выводятся все результаты (строки total), среди которых могут иметь место значительные экстремумы, связанные с кэшированием, отложенной записью дисковых данных, и другими формами спекулятивности, применяемыми ОС и JVM и существенно влияющими на результат бенчмарок.

Для нивелирования этого фактора, в режиме, рекомендуемом по умолчанию, утилита обрабатывает достаточно большой объем данных: 10 файлов по 1 гигабайту. Так как копирование требует наличия пары файлов: источника и получателя, для такого теста требуется не менее 20 гигабайт свободного пространства. Уменьшая количество файлов и их размер, можно сократить эти требования, а также время выполнения бенчмарок, но это неизбежно отразится на устойчивости результатов.

Для минимизации влияния фрагментации файлов, а также технологии ZBR (Zone Bit Recording) на повторяемость бенчмарок, рекомендуется выполнять тест на только что отформатированном разделе. Желательно после старта операционной системы выдержать интервал, в течение которого должны быть завершены все подготовительные процессы, связанные с запуском фоновых и резидентных задач. Особое внимание стоит уделить процедурам свопинга: увеличение объема оперативной памяти положительно сказывается на повторяемости результатов работы утилиты NIOBench.






about
press


вверх