Тест производительности консольных архиваторов в Linux.

|

arc-test-linux-000.jpgАрхиваторы, несмотря на рост объемов хранилищ и всеобщим стремлением в "облака", продолжают оставаться предметом первой необходимости для многих администраторов. На платформе Linux интерес, в первую очередь, представляют консольные архиваторы, которые часто используются в автоматическом режиме для регламентых задач. Мы, в своей тестовой лаборатории, провели сравнение самых известных из них, а также оценили их пригодность для различных вариантов использования.

В большинстве случаев цель использования архиваторов в современных серверных системах, вне зависимости от платформы, это создание резервных копий. Что касается платформы Linux, то здесь имеется ряд особенностей, которые следует учитывать при проведении тестирования и интерпретации результатов.

Основной характер применения Linux серверов - это хостинг, почта, различные веб-приложения и т.д., очень часто такие сервера выполняются в виртуальной среде с очень ограниченными ресурсами, а резервные копии следует передавать в хранилище через интернет. При этом возникают прямо противоположные требования, особенно для систем, работающих в круглосуточном режиме, ограниченные ресурсы требуют от архиватора низкой нагрузки на систему, а передача архивов по сети интернет, особенно в условиях оплаты трафика, высокой степени сжатия.

Несколько проще обстоят дела с корпоративными системами, особенно расположенными внутри периметра, так для почтового сервера предприятия вполне допустимо значительное снижение производительности в ночные часы, а с сервер 1С во внерабочее время вообще может предоставить архиватору 100% вычислительных ресурсов, зато существенный объем информации требует максимальной степени сжатия, так как хранилище "не резиновое", а финансирование инфраструктуры резервного копирования обычно проводится крайне неохотно. Также корпоративные системы крайне редко работают в условиях жестко ограниченных ресурсов, в то время как для VPS 512 Мб оперативки и одно виртуальное ядро - суровая норма жизни.

Еще одно, накладываемое платформой требование, это кроссплатформенная поддержка формата. Резервная копия может потребоваться в любой ситуации и крайне желательно, чтобы архив можно было успешно распаковать штатными средствами на любой платформе.

Как мы тестировали

Для тестов мы использовали виртуальную машину на базе VMWare Workstation, которой выделили два ядра хостового i5-4670 и 2 Гб оперативной памяти, куда установили Ubuntu Server 14.04. Для контороля совместимости использовались еще две виртуальные машины: Windows 8.1 с установленными WinRAR и 7-Zip и Ubuntu 14.04 с набором пакетов архиваторов аналогичным тестовой системе.

Учитывая характер использования, мы подготовили наборы данных наиболее соответствующие задаче "веб-сервер".

  • Набор db - дампы MySQL баз общим объемом 1 ГБ.
  • Набор media - изображения форматов JPG и PNG объемом 220 Мб
  • Набор txt - текстовые файлы логов, PHP-скрипты и т.п. общим объемом 417 Мб
  • Набор www - смешанное содержимое, для которого мы взяли несколько реальных веб-сайтов, т.е. скрипты, графика, архивы, логи. Т.е. именно то, что реально приходится архивировать на веб-сервере.

В тестах приняли участие следующие архиваторы:

  • gzip (GNU ZIP) 1.6 - открытый аналог архиватора ZIP, использующий аналогичный алгоритм. Во многих Linux-системах стандарт архиватора де-факто. Широко используется для сжатия трафика и поддерживается всеми современными браузерами. Входит в базовую поставку Ubuntu.
  • bzip2 1.0.6 - еще один популярный свободный архиватор, который использует оригинальный алгоритм. Отличается более высокой степенью сжатия, чем традиционные gzip и ZIP, но проигрывает им в скорости. Входит в поставку многих Linux систем по-умолчанию, в т.ч. и в Ubuntu.
  • ZIP 3.0 - прародитель многих современных архиваторов, стандарт архива де-факто, распаковка поддерживается из-коробки подавляющим большинством систем. Сам архиватор в Ubuntu устанавливается одноименным пакетом.
  • RAR 4.2.0 - коммерческий архиватор, использующий закрытый алгоритм, очень популярен на платформе Windows среди пользователей России и стран бывшего СССР. На плафторме Linuх особого распространения не получил, в Ubuntu пакет rar следует установить отдельно.
  • 7-Zip 9.20.1 - популярный открытый архиватор с высокой степенью сжатия. Использует алгоритм LZMA, в Ubuntu требуется установка пакета p7zip-full.
  • Lzip 1.14 - свободный архиватор на основе алгоритма LZMA, по заявлению разработчиков "распаковывает почти так же быстро, как gzip и сжимает лучше, чем bzip2", в Ubuntu устанавливается пакетом lzip.
  • LZMA - реализация одноименного алгоритма, по умолчанию в Ubuntu поддержка данного формата осуществляется пакетом xz-utils, который входит в поставку.
  • XZ 5.1.1- архиватор на основе алгоритма LZMA2, архиватор по умолчанию в BSD, поддерживается в Ubuntu пакетом xz-utils, входящим в базовую поставку.
  • Lzop 1.03 - свободный архиватор, использующий алгоритм LZO, во главу угла поставлена скорость работы, в ущерб степени сжатия. Требует установки пакета lzop в Ubuntu.

С учетом того, что многие консольные архиваторы не умеют сжимать несколько файлов, то мы их использовали совместно с утилитой tar, которая предварительно упаковывает файлы в единый контейнер.

Время выполнения задачи мы засекали при помощи утилиты time, результат представляет среднюю трех измерений, округленную до целых секунд. Все архиваторы использовались с настройками по умолчанию.

Затем мы провели измерения нагрузки на процессор и загрузки ОЗУ, для этого мы последовательно уменьшали ОЗУ системы до 1ГБ и 512 Мб и повторили тесты на архивацию. Для изучения масштабируемости в многоядерных системах мы в одном из тестов увеличили количество ядер до 4. Для фиксации результатов использовалась утилита htop.

Скорость архивирования

arc-test-linux-001.jpgБезусловный лидер теста - lzop, который показывает предельно низкое время на всех наборах данных. За ним идут ZIP и gzip, обеспечивая на общем фоне также очень неплохой результат. За ними следом идут bzip2 и RAR, которые справились с задачей за большее время, но гораздо лучше оставшихся участников. Если на базах данных и графике оба архиватора идут рядом, то на текстовом и смешанном содержимом RAR выходит вперед.

Все оставшиеся архиваторы используют алгоритм LZMA, который отличается существенно большим временем сжатия. На таких наборах, как базы данных, скорость отличается в разы. Выделить из этой группы можно только 7-Zip, который показывает лучшие результаты в группе, приближаясь на всех наборах, кроме баз данных, к RAR и bzip2.

Степень сжатия

arc-test-linux-002.jpgЛучший результат в этом тесте принадлежит LZMA-архиваторам, на таких наборах данных как текст и базы данных они опережают ZIP и gzip практически вдвое, здесь к ним вплотную подходят RAR и bzip2. На остальных задачах разрыв не столь велик, но и здесь алгоритм LZMA уверенно держит лидерство, а остальные архиваторы идут вровень. Исключение - lzop, он показал самые худшие результаты, существенно уступая остальным участникам.

В общем прослеживается прямая зависимость время архивации - степень сжатия. Если вы готовы подождать ради результата - ваш выбор однозначно за LZMA-архиваторами, если важна скорость - используйте lzop, остальные участники представляют разумный баланс между сжатием и скоростью работы.

Скорость разархивирования

arc-test-linux-003.jpgЯвных лидеров в этом тесте нет, практически все архиваторы укладываются в разумное время, архиваторы на базе LZMA - немного медленнее. Хуже всего дела с распаковкой обстоят у bzip2, а также 7-Zip показал неожиданный провал на распаковке графики и на смешанном содержимом (по причине значительной доли графики в составе).

Рейтинг эффективности алгоритмов

Чтобы привести результаты к некому общему знаменателю, мы на основании полученных данных рассчитали рейтинг эффективности. За основу мы взяли рейтинг ixbt.com, который рассчитывается следующим образом: R = (сумма времени архивирования и распаковки * суммарный объем архивов) / 1000. Чем меньше значение рейтинга, тем лучше.

arc-test-linux-004.jpg

Самыми эффективными оказались алгоритмы на основе старого доброго zip, собственно сам ZIP и gzip - стандарт де-факто в Linux системах. А также, возможно для многих неожиданно, Lzop, показавший в абсолютных значениях лучшую эффективность. Но если разобраться, то все закономерно. Возьмем смешанное содержимое: Lzop сжал набор данных до 77% за 13 секунд, gzip до 70% за 24 с, а LZMA-алгоритмы затратили около 2,5 минут, обеспечив степень сжатия в 65%. А теперь сравним 13 и 150 секунд затраченного времени с 77% и 65% полученного результата.

Средние места заняли RAR и bzip2, а вот 7-Zip и остальные LZMA-архиваторы катастрофически проигрывают в скорости работы и могут быть рекомендованы только как нишевые решения, когда требуется максимально высокая степень сжатия, а затраченное на это время не имеет никакого значения.

Для итоговой оценки мы решили ввести свой рейтинг, оценив каждый из архиваторов по 5-бальной системе, по принципу меньше-лучше: gzip, ZIP и Lzop - 1 балл, RAR - 2 балла, bzip2 - 3, 7-Zip - 4, остальные - 5 баллов.

Совместимость

Еще один важный аспект, так как распаковать архив может потребоваться в любое время и на любой системе. И времени или возможности искать подходящий разархиватор может не быть.

На платформе Windows мы использовали WinRAR и 7-Zip, хотя можно обойтись чем-то одним. WinRAR прекрасно понимает и открывает все форматы кроме Lzip, LZMA и Lzop. LZMA можно открыть принудительно и извлечь из него tar-контейнер. 7-Zip работает несколько хуже, извлекая большинство Linux-форматов в два приема, сначала распаковывая tar-контейнер, а затем его содержимое.

Таким образом все архиваторы кроме Lzip, LZMA и Lzop, получают 1 балл, LZMA - 3, остальные - 5.

В Linuх системах ситуация лучше, при наличии всех необходимых пакетов нормально извлекаются все архивы, на чистой системе не поддерживаются RAR, 7-Zip, LZip - пакеты для них находятся и устанавливаются автоматически, и Lzop, с которым возникают проблемы, вместо установки одноименного пакета система предлагает установить архиватор для Xfce.

По итогам: RAR, 7-Zip, LZip - 2 балла, Lzop - 4, остальные - 1.

Ресурсоемкость

Хорошая скорость работы, высокая степень сжатия и т.п. отходят на второй план перед потреблением архиватором процессорных ресурсов и оперативной памяти. Если ваш сайт во время создания резервной копии будет недоступен, то вряд-ли вы будете в восторге от такого решения. А на недорогих VPS исчерпание оперативной памяти может не только загнать систему в своп, но и привести к аварийной перезагрузке.

Первоначальные замеры мы делали на двухядерной системе с 2 Гб оперативной памяти, затем уменьшали память до 1 Гб и 512 МБ и добавляли еще два ядра. Никаких задач система в этот момент не выполняла. Вот типичное потребление ресурсов в режиме простоя:

arc-test-linux-005.jpggzip

Основным достоинством этого архиватора, кроме отличной эффективности, является крайне малое потребление памяти, мы затрудняемся дать точную оценку, что-то вроде 2-3 МБ, нагрузка на процессор выражается в полной загрузке одного ядра. При увеличении количества ядер масштабирования не происходит.

arc-test-linux-006.jpg

bzip2

Также грузит только одно ядро и не масштабируется, потребность в памяти немного более велика и составляет около 8 МБ.

arc-test-linux-007.jpgZIP

Потребление процессорных ресурсов ничем не отличается от своих предшественников, а вот оперативной памяти ему требуется гораздо больше, около 40 МБ. Если учесть что его эффективность ничем не отличается от gzip, то применение ZIP в консольном варианте теряет всякий смысл.

arc-test-linux-008.jpgRAR

А здесь ситуация принципиально иная, RAR отлично использует все имеющиеся вычислительные ресурсы:

arc-test-linux-009.jpgОтлично масштабируется:

arc-test-linux-010.jpgВ каких-то ситуациях это хорошо, но в нагруженных системах с ограниченными ресурсами это может привести к отказу в обслуживании. Да и оперативной памяти ему требуется целых 100 МБ, по меркам недорогих VPS - недопустимая роскошь.

Есть у RAR и еще один недостаток - он платный. Однако, справедливости ради, следует отметить, что никаких ограничений на консольную версию архиватора не налагается, даже после истечения ознакомительного периода.

7-Zip

Как и все LZMA-архиваторы, вызывает противоречивые чувства. С одной стороны, отличная степень сжатия, но какой ценой. 220-250 МБ памяти вне зависимости от характера сжимаемых данных - это откровенный перебор.

arc-test-linux-011.jpgИспользование процессора в большинстве случаев ограничивается 1,5 ядрами, поэтому никакого прироста производительности в многоядерных системах вы не получите.

arc-test-linux-012.jpgА вот эта картина заставит многих схватиться за сердце:

arc-test-linux-013.jpgВладельцы недорогих VPS сразу могут вешать табличку "Сайт закрыт, все ушли архивировать данные".

Lzip

Здесь снова привычная для Linux-архиваторов картина: 1 ядро и никакого масштабирования. Потребность в ОЗУ выше средней - 90 МБ.

arc-test-linux-014.jpgLZMA и XZ

Так как оба эти формата поддерживаются одним пакетом, то мы объединили их в один пункт. Как и в других тестах, LZMA-архиваторы очень похожи друг на друга, та же самая нагрузка на процессор и потребность в 90-100 МБ ОЗУ.

arc-test-linux-015.jpgLzop

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

arc-test-linux-016.jpg

Точную оценку используемой памяти мы дать затрудняемся, что-то около 2,5 МБ.

arc-test-linux-017.jpgИтоги

Как видим, разные архиваторы предполагают различный подход к использованию ресурсов сервера. Явные лидеры здесь, это традиционные gzip и bzip2, а также Lzop. Остальные архиваторы явно рассчитаны на иное применение: RAR явно стремится использовать все доступные процессорные ресурсы, LZMA-архиваторы требовательны к памяти. Также большинство архиваторов используют только одно процессорное ядро, а, следовательно вы не получите никаких преимуществ на многоядерных системах.

По итогам данного теста мы решили присвоить оценки в двух категориях: нагрузка на ЦП и потребление ОЗУ.

Нагрузка на ЦП: RAR - 5 баллов, 7-Zip - 3 балла, остальные - 1 балл. Потребление ОЗУ: 7-Zip - 5 баллов, Lzip, LZMA, RAR и XZ - 4 балла, ZIP - 3 балла, bzip2 -2 балла, остальные - 1 балл.

Общая оценка и выводы

Разрабатывая систему формирования общей оценки, мы старались учесть не только технические аспекты, которые безусловно важны, но и пользовательские характеристики, такие как поддержка форматов на разных ОС. Ведь недостаточно быстро и эффективно сжать архив, желательно не создавая сильной нагрузки на сервер, надо еще подумать, как его извлекать. А если для извлечения пользователю или администратору придется искать инструмент, а затем учиться его использовать, то это перечеркнет все плюсы данного архиватора, особенно в условиях сбоя, когда каждая минута на счету.

arc-test-linux-018.jpgВ общем никакой неожиданности не произошло. Наиболее подходящими для консольного архивирования оказались используемые в Linux-системах по умолчанию gzip и bzip2. Также в этот список попал ZIP, который, несмотря на относительно высокое потребление памяти, поддерживается буквально везде "из-коробки".

Lzop, хоть и показал отличную эффективность и нетребовательность к ресурсам, страдает от плохой поддержки данного формата даже в Linux, не говоря уже о Windows системах.

Остальные архиваторы, несмотря на все их преимущества основательно проигрывают либо в эффективности, либо в потреблении ресурсов, а некоторые и в том и в другом.

 

Подписка на блог

Наш канал на YouTube Мы в Твиттере

Архивы по месяцам

Реклама

Статистика

 

Яндекс.Метрика

География

Flag Counter

Реклама

Об этой записи

Сообщение опубликовано 29.09.2014 22:02. Автор — Уваров А.С..

Предыдущая запись — Веб-сервер Lighttpd - включаем поддержку SSL.

Следующая запись — Админу на заметку -13. Как быстро получить последнюю сборку Windows 8.1.

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.

Реклама

Облако тегов