Архивация в несколько потоков
Понадобилось по работе делать снапшоты несколько-GB-тных логов и нетлистов прогонов синтеза под ПЛИС, есть несоклько архиваторов использующих многопоточность/многоядерность, попробовал pbzip2, установим:
1 | sudo yum install -y pbzip2.x86_64 |
Сама строка из мейкфайла:
1 | tar -cpS syn/out/* syn/log/*.rpt $(LOG) | pbzip2 -7 --compress --force --read -m2000 -p16 > ~/work/$(shell date +%Y%m%d%H%M%S)-$(FPGA_TARGET)-$(shell git rev-parse --abbrev-ref HEAD).tar.bz2 |
тут делаем tar’ом из нескольких файлов один и передаем в pbzip2, конечный файл называем текущей датой, именем проекта и текущей веткой гита, подробнее про опции pbzip2:
- 7 — степень компрессии 1..9(лучше,медленне), по факту — размер блока 7 = 700 КБ
- force — перезаписать если файл уже существует
- read — означает зачитать входной файл в ОЗУ и там разбить по процессорам
- m2000 — сколько оперативки в МБ использовать. 2ГБ — это практический максимум
- p16 — принудительное задание сколько ядер юзать