ГлавнаяОперационные системыLinuxКак сжать архивы с использованием всех ядер процессора с помощью Tar

Как сжать архивы с использованием всех ядер процессора с помощью Tar

Если вам когда-либо приходилось сжимать большие объемы с помощью tar, вы знаете, насколько это может быть сложно. Часто это происходит очень медленно, и вы нажимаете Ctrl+ C, чтобы завершить задачу и просто забыть о ней. Однако есть и другие инструменты, которые может использовать tar, и они являются отличным способом использовать современные многопоточные процессоры и ускорить архивирование tar. В этой статье показано, как заставить tar использовать все ядра при сжатии архивов в Linux.

Понимание и установка инструментов

Три основных инструмента, о которых идет речь, — pigz, pbzip2 и pxz. Между инструментами есть некоторые тонкие различия, но различия заключаются между gzip, bzip2 и xz. В этом порядке уровни сжатия увеличиваются, а это означает, что архив, сжатый с помощью gzip, будет больше, чем архив, сжатый с помощью xz, но gzip, естественно, займет

Понимание и установка инструментов

-то посередине.

Буква «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
Установка Tar для всех ядер Dnf

В целях единообразия в этой статье основное внимание уделяется 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» и буду использовать его. Итак, я начну эту команду с команды timeспереди, чтобы посмотреть, сколько времени это займет. Вы также можете видеть, что xz указан как занимающий самый высокий процент использования моего процессора в этой системе, но он закрепляет только одно ядро ​​на 100 процентах.

Tar Все ядра Tar Xz
Tar для всех ядер Htop 1

И, как вы можете видеть, моим устаревшим i7-2600 потребовалось очень много времени, чтобы сжать Linux 5.10-rc3 (около 28 минут).

Сжатие архивов с помощью Tar.ru/wp-content/uploads/2024/05/tar-all-cores-xz-time.jpg" alt="Tar Все ядра Xz Время"><

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

Использование инструментов параллельного сжатия с Tar

Вы можете либо указать tar использовать программу сжатия с опцией --use-compression-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.

Tar для всех ядер Tar Pxz
Tar для всех ядер Htop 2

Вы можете видеть, что сжатие этого архива заняло значительно меньше времени (около семи минут!), и это при многозадачности. У меня есть виртуальная машина, работающая в фоновом режиме, и в данный момент я просматриваю веб-страницы. Аппаратный планировщик ядра Linux предоставит вам все, что вам нужно для ваших личных задач, поэтому, если вы оставите команду pxzзапускаться без каких-либо других программ, работающих в вашей системе, вы сможете сделать это быстрее..

Tar все ядра Pxz время

Регулировка уровня сжатия с помощью pigz, pbzip2 и pxz

Вы также можете передать в pxz уровни сжатия, чтобы сделать файл еще меньше. Это потребует больше оперативной пам

Использование инструментов параллельного сжатия с Tar

тельно нужно получить небольшой файл. Вот сравнение двух команд и их результатов.

Tar все ядра Tar Pxz 9
Tar Все ядра Pxz 9 Время
Сравнение сжатия Tar для всех ядер

Сжатие не намного сильнее, и время не обязательно того стоит, но если каждый мегабайт имеет значение, это все равно отличный вариант.

Надеюсь, вам понравилось это руководство по использованию всех ядер для сжатия архивов с помощью tar. Обязательно ознакомьтесь с другим нашим контентом по Linux, например как собрать новый компьютер для Linux , освоить Apt и стать гуру Apt и как установить Arch Linux на Raspberry Pi .

Регулировка уровня сжатия с помощью pigz, pbzip2 и pxz

ПОХОЖИЕ СТАТЬИ

Популярные записи