Скоростная отказоустойчивая компрессия
Продолжение
Данная статья уже вторая в теме о скоростной компрессии данных. В первой статье был описан компрессор работающий со скоростью 10Гбайт/сек. на одно процессорное ядро (минимальное сжатие, RTT-Min).
Этот компрессор, уже внедрен в оборудование криминалистических дубликаторов для скоростного сжатия дампов носителей информации и усиления стойкости криптографии, также он может применяться для сжатия образов виртуальных машин и своп файлов оперативной памяти при сохранении их на быстродействующих SSD накопителях.
В первой статье также анонсировалась разработка алгоритма компрессии для сжатия резервных копий HDD и SSD дисковых накопителей (среднее сжатие, RTT-Mid) с существенно улучшенными параметрами сжатия данных. К настоящему времени этот компрессор полностью готов и данная статья именно о нем.
Компрессор, реализующий алгоритм RTT-Mid обеспечивает степень сжатия сравнимую со стандартными архиваторами типа WinRar, 7-Zip, работающих в скоростном режиме. При этом скорость его работы как минимум на порядок выше.
Скорость упаковки/распаковки данных является критическим параметром определяющим область применения технологий компрессии. Вряд ли кому придет в голову сжимать терабайт данных со скоростью 10-15 МегаБайт в секунду (именно такая скорость архиваторов в стандартном режиме компрессии), ведь на это придется затратить почти двадцать часов при полной загрузке процессора…
С другой стороны тот же терабайт можно скопировать на скоростях порядка 2-3ГигаБайт в секунду минут за десять.
Поэтому сжатие информации большого обьема актуально если его производить со скоростью не ниже скорости реального ввода/вывода. Для современных систем это не менее 100МегаБайт в секунду.
Такие скорости современные компрессоры могут выдавать только в режиме «fast». Вот в этом актуальном режиме и будем проводить сравнение алгоритма RTT-Mid с традиционными компрессорами.
Сравнительное тестирование нового алгоритма компрессии
Компрессор RTT-Mid работал в составе тестовой программы. В реальном «рабочем» приложении он работает значительно быстрее, там грамотно используется многопоточность и применяется «нормальный» компилятор, а не СИ#.
Поскольку используемые в сравнительном тесте компрессоры построены на разных принципах и различные типы данных сжимают по разному, то для объективности теста использовался метод замера «средней температуры по больнице»…
Был создан файл посекторного дампа логического диска с операционной системой Windows -10, это наиболее естественная смесь различных структур данных реально имеющаяся на каждом компьютере. Сжатие этого файла позволит провести сравнение по скорости и степени компрессии нового алгоритма с самыми продвинутыми компрессорами используемыми в современных архиваторах.
Вот этот файл дампа:
Файл дампа сжимался компрессорами РТТ-Mid, 7-zip, WinRar. Компрессор WinRar и 7-zip были выставлены на максимальную скорость работы.
Работает компрессор 7-zip:
Он грузит процессор на 100%, при этом средняя скорость чтения исходного дампа около 60МегаБайт/сек.
Работает компрессор WinRar:
Ситуация аналогичная, загрузка процессора практически 100%, средняя скорость чтения дампа около 125МегаБайт/сек.
Как и в предыдущем случае, скорость работы архиватора ограничена возможностями процессора.
Теперь работает тестовая программа компрессора RTT-Mid:
Скриншот показывает, что процессор загружен на 50% и простаивает остальное время, потому как некуда выгружать скомпрессированные данные. Диск выгрузки данных (Диск 0) загружен практически полностью. Скорость чтения данных (Диск 1) сильно скачет, но в среднем более 200МегаБайт/сек.
Скорость работы компрессора ограничивается в данном случае возможностью записи сжатых данных на Диск 0.
Теперь степень сжатия получившихся архивов:
Видно что компрессор RTT-Mid лучше всех справился с компрессией, архив созданный им на 1,3ГигаБайта меньше архива WinRar и на 2,1ГигаБайта меньше архива 7z.
Время затраченное на создание архива:
7-zip – 26минут 10 секунд
WinRar – 17минут 40 секунд
RTT-Mid – 7 минут 30 секунд
Таким образом, даже тестовая, не оптимизированная программа используя алгоритм RTT-Mid смогла более чем в два с половиной раза быстрее создать архив, при этом архив оказался существенно меньшим нежели у конкурентов…
Те, кто не верит скриншотам, могут проверить их достоверность самостоятельно. Тестовая программа доступна по ссылке, скачивайте и проверяйте.
Но только на процессорах с поддержкой AVX-2, без поддержки этих инструкций компрессор не работает, и не тестируйте алгоритм на старых процессорах AMD, они медленные в части выполнения AVX команд….