Как сжимать архивы с использованием всех ядер процессора с помощью Tar
Если вам когда-либо приходилось сжимать большие объемы с помощью tar, вы знаете, насколько это может быть неприятно. Часто это происходит очень медленно, и вы нажимаете Ctrl + C, чтобы завершить задачу и просто забыть об этом. Однако есть и другие инструменты, которые может использовать tar, и они – отличный способ использовать современные многопоточные процессоры и ускорить архивирование tar. В этой статье показано, как заставить tar использовать все ядра при сжатии архивов в Linux.
Здесь речь идет о трех основных инструментах: pigz, pbzip2 и pxz. Между инструментами есть некоторые тонкие различия, но различия лежат между gzip, bzip2 и xz. В этом соответствующем порядке уровни сжатия увеличиваются, что означает, что архив, сжатый с помощью gzip, будет больше, чем архив, сжатый с помощью xz, но gzip, естественно, займет меньше времени, чем xz. bzip2 находится где-то посередине.
Буква «p» в начале названия каждого из инструментов означает «параллельный». Распараллеливание – это то, что с годами становится все более актуальным – насколько хорошо что-то охватывает все ядра ЦП. Имея такие процессоры, как AMD Epyc и Threadripper, которые могут достигать 64 ядер и 128 потоков, важно понимать, какие приложения могут это использовать. Эти функции сжатия – главные кандидаты.
Чтобы установить инструменты, вы можете просто обратиться к своим репозиториям.
sudo apt install pigz pbzip2 pxz # Debian / Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
В этой статье основное внимание уделяется pxz для обеспечения единообразия. Вы можете проверить это руководство для pigz.
Сжатие архивов с помощью Tar
Синтаксис tar довольно прост. Чтобы просто сжать каталог, вы можете использовать такую команду:
tar czf linux-5.10-rc3.tar.gz linux / tar cjf linux-5.10-rc3.tar.bz2 linux / tar cJf linux-5.10-rc3.tar.xz linux /
Первый будет использовать gzip, второй – bzip2, а третий – xz. Имя файла и каталог будут различаться в зависимости от того, что вы делаете, но я вытащил ядро Linux из GitHub в свой каталог «/ home», и я буду его использовать. Итак, я начну эту команду с команды времени впереди, чтобы посмотреть, сколько времени это займет. Вы также можете видеть, что xz указан как занимающий самый высокий процент моего процессора в этой системе, но он фиксирует только одно ядро на 100 процентов.
И, как видите, моим стареющим i7-2600 потребовалось очень много времени для сжатия Linux 5.10-rc3 (около 28 минут).
Вот где пригодятся эти инструменты параллельного сжатия. Если вы сжимаете большой файл и хотите сделать это быстрее, я не могу рекомендовать эти инструменты в достаточной степени.
Вы можете либо указать tar использовать программу сжатия с параметром –use-compress-program, либо использовать немного более простой командный флаг -I. Пример синтаксиса любого из этих инструментов будет таким:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux / tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux / tar -I pxz -cf linux-5.10-rc3.tar.xz linux /
Давайте протестируем это и посмотрим, сколько времени потребуется моей системе, чтобы сжать ядро Linux с доступом ко всем восьми потокам моего процессора. Вы можете видеть мои показания htop, показывающие все потоки, закрепленные при 100-процентном использовании из-за pxz.
Вы можете видеть, что сжатие этого архива заняло существенно меньше времени (около семи минут!), И это было при многозадачности. У меня есть виртуальная машина, работающая в фоновом режиме, и сейчас я просматриваю веб-страницы. Планировщик оборудования ядра Linux предоставит вам все, что вам нужно для ваших личных вещей, поэтому, если вы оставите свою команду pxz для работы без каких-либо других работ, запущенных в вашей системе, вы сможете сделать это быстрее.
Регулировка уровней сжатия с помощью pigz, pbzip2 и pxz
Вы также можете передавать уровни сжатия в pxz, чтобы сделать файл еще меньше. Это потребует больше оперативной памяти, процессора и времени, но оно того стоит, если вам действительно нужен небольшой файл. Вот сравнение двух команд и их результатов рядом.
Сжатие не намного больше, и время не обязательно того стоит, но если на счету каждый мегабайт, это все равно отличный вариант.
Надеюсь, вам понравилось это руководство по использованию всех ядер для сжатия архивов с помощью tar. Обязательно ознакомьтесь с некоторыми из других наших материалов по Linux, например, как собрать новый ПК для Linux, освоить Apt и стать гуру Apt, а также как установить Arch Linux на Raspberry Pi.
Связанный:
Эта статья полезна? да нет