Новая версия NIOBench сможет работать с отложенной записью


Новая версия NIOBench сможет работать с отложенной записью

Выпущена новая версия утилиты NIOBench v0.42, основанная на при­ме­не­нии популярного фреймворка java.NIO. С его помощью удается оптими­зи­ро­вать файловый ввод-вывод за счет асинхронных неблокирующих опе­ра­ций, а также минимизации вспомогательных преобразований и пересылок данных при взаимодействии виртуальной java-среды и реальных ап­па­рат­ных средств платформы. Концепция каналов и буферов, положенная в ос­но­ву этого фреймворка, максимально соответствует модели передачи ин­фор­ма­ции между mass storage устройством и оперативной памятью. Немало­ва­ж­ное значение имеет применение прямых буферов, непосредственно пред­став­ляющих диапазоны оперативной памяти и создаваемых методом ByteBuffer.allocateDirect();

 

Доступ к файлам реализуется средствами объекта FileChannel. Методы этого объекта, в частности read(), write(), transferTo() используются соответственно для чтения, записи и копирования файлов, как нетрудно догадаться из их названия. Измерение времени базируется на прецизионном методе System.nanoTime(), он возвращает результат в наносекундах, хотя реальная гранулярность приращений таймера может быть в десятки раз больше одной на­но­секунды и зависеть от реализации JVM.

С помощью поля DATA в NIOBench можно выбирать тип заполнения тестового паттерна: нулями либо псевдослучайными числами Поле MODE  в утилите NIOBench определяет алгоритм тестирования: асинхронный (самый быстрый) или один из подвидов синхронной передачи данных

В версии NIOBench 0.42 добавлена поддержка атрибута SPARSE, сообщающего процедурам обслуживания, что со­здаваемый файл будет использован для хранения разреженных (поддающихся сжатию) данных. Теоретически, это создает предпосылки для оптимизации на уровне управления накопителем и файловой системы. На практике, ОС может и проигнорировать данный атрибут. Опционально, тестовые файлы могут заполняться нулями, либо псев­до­случайными данными. Приложение снабжено нативными библиотеками, подключаемыми посредством ин­тер­фей­са JNI (Java Native Interface) и обеспечивающими поддержку аппаратного источника энтропии.

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