어떤 압축 도구 멀티 코어 CPU에서 우분투에서 사용할 수있는 혜택을 수 있습니다.
어떤 압축 도구 멀티 코어 CPU에서 우분투에서 사용할 수있는 혜택을 수 있습니다.
답변:
두 가지 주요 도구가 있습니다. lbzip2
그리고 pbzip2
. 그것들은 본질적으로 bzip2 압축기의 다른 구현입니다. 나는 그것들을 비교했다 (출력은 정리 된 버전이지만 명령을 실행할 수 있어야한다)
cd /dev/shm # we do all of this in RAM!
dd if=/dev/urandom of=bigfile bs=1024 count=102400
$ lbzip2 -zk bigfile
Time: 0m3.596s
Size: 105335428
$ pbzip2 -zk bigfile
Time: 0m5.738s6
Size: 10532460
lbzip2
무작위 데이터의 승자로 보입니다. 약간 덜 압축되었지만 훨씬 빠릅니다. YMMV.
/dev/urandom
랜덤 데이터는 압축 할 수 없기 때문에 압축 도구 벤치마킹을위한 훌륭한 선택은 아닙니다. 그것은 두 경우 모두 출력 파일이 입력보다 ~ 450MiB 더 큰 이유를 부분적으로 설명합니다 .
00000000000000000000000000000000
있습니다. 그것이 무작위로 작동하는 방식입니다.) 당신이 말하는 것은 실제 평균입니다. 그것은의 가능성 그냥 제로의 100MB의 파일을 생성 할 수 있습니다. 그리고 나는 당신이 말하는 것의 정신에 동의합니다. "정의"에 동의하지 않습니다. 왜냐하면 그것은 정의가 아니기 때문입니다 (정확하지 않기 때문입니다).
wget http://mattmahoney.net/dc/enwik8.zip
를 들어 위키피디아에서 96MB (21MB 압축)의 텍스트를 가져 오기 위해 텍스트를 파이프하는 것이 좋습니다 . 훨씬 포괄적 인 벤치 마크 제품군 은 여기를 참조하십시오 .
글쎄, 키워드는 평행했다 . 병렬 인 모든 압축 도구를 찾은 후 다음을 발견했습니다.
PXZ -Parallel XZ는 여러 코어 및 프로세서에서 입력 파일의 다른 부분에 대한 LZMA 압축을 동시에 실행하는 압축 유틸리티입니다. 주요 목표는 모든 리소스를 활용하여 압축 비율에 미치는 영향을 최소화하면서 압축 시간을 단축하는 것입니다.
sudo apt-get install pxz
PLZIP -Lzip은 LZMA 알고리즘을 기반으로하는 무손실 데이터 압축기로, 안전한 무결성 검사와 gzip 또는 bzip2와 유사한 사용자 인터페이스를 제공합니다. Lzip은 gzip만큼 압축을 풀고 bzip2보다 압축 성능이 우수하므로 소프트웨어 배포 및 데이터 보관에 적합합니다.
Plzip은 lzip 파일 형식을 사용하는 대규모 병렬 (멀티 스레드) 버전의 lzip입니다. plzip으로 작성된 파일은 lzip과 완전히 호환됩니다.
Plzip은 멀티 프로세서 시스템에서 큰 파일을보다 빠르게 압축 / 압축 해제하기 위해 고안되었으므로 큰 소프트웨어 파일 및 대규모 데이터 아카이브의 배포에 특히 적합합니다. 충분히 큰 파일에서 plzip은 수백 개의 프로세서를 사용할 수 있습니다.
sudo apt-get install plzip
GZip의 병렬 구현을 의미하는 PIGZ -pigz는 데이터를 압축 할 때 여러 프로세서와 여러 코어를 활용하는 gzip을 완전히 대체하는 기능입니다.
sudo apt-get install pigz
PBZIP2 -pbzip2는 pthread를 사용하고 SMP 머신에서 거의 선형 속도 향상을 달성하는 bzip2 블록 정렬 파일 압축기의 병렬 구현입니다. 이 버전의 출력은 bzip2 v1.0.2와 완전히 호환됩니다 (예 : pbzip2로 압축 된 항목은 bzip2로 압축 해제 할 수 있음).
sudo apt-get install pbzip2
LRZIP- 큰 파일과 함께 사용할 때 매우 높은 압축률과 속도를 달성 할 수있는 다중 스레드 압축 프로그램입니다. 최대 압축에는 zpaq 및 lzma, 최대 속도에는 lzo, rzip의 장거리 중복 감소 압축 알고리즘을 사용합니다. RAM 크기가 증가함에 따라 확장되도록 설계되어 압축률을 더욱 향상시킵니다. 크기 또는 속도 최적화 중 하나를 선택하면 lzma가 제공 할 수있는 것보다 압축률이 향상되거나 gzip보다 속도가 향상되지만 bzip2 크기 압축 수준을 사용할 수 있습니다.
sudo apt-get install lrzip
작은 압축 벤치 마크 (Oli가 만든 테스트 사용) :
원본 파일 크기
-100MB PBZIP2-101MB (1 % 큰)
PXZ-101MB (1 % 큰)
PLZIP-102MB (1 % 큰)
LRZIP-101MB (1 % 큰)
PIGZ-101MB (1 % 큰) )
작은 압축 벤치 마크 (텍스트 파일 사용) :
원본 파일 크기
-70KB 텍스트 파일 PBZIP2-16.1KB (23 %)
PXZ-15.4KB (22 %)
PLZIP-15.5KB (22.1 %)
LRZIP-15.3KB (21.8 %)
PIGZ-17.4KB (24.8 %)
lrzip
들어을 사용하여 출력을 압축 해제 할 수 있습니다 pbzip2
.
또한 좋은 요약 위 (감사 루이스), 요즘 사람들은 또한 README는 (소스의에 따라 PIXZ을 고려하는 것이 좋습니다 : https://github.com/vasi/pixz - 나는 주장 자신을 확인하지 않은 )는 PXZ보다 몇 가지 장점이 있습니다.
[Compared to PIXZ, PXZ has these advantages and disadvantages:]
* Simpler code
* Uses OpenMP instead of pthreads
* Uses streams instead of blocks, not indexable
* Uses temp files and doesn't combine them until the whole file is compressed, high disk/memory usage
다시 말해, PIXZ는 메모리와 디스크 효율성이 높을 것으로 생각되며 압축 된 tar 파일의 개별 구성 요소 압축 해제 속도를 높이는 선택적 색인 기능이 있습니다.
pixz
아카이브가 표준 xz
형식 과 호환되지 않는다는 것을 이해 pxz
합니다.
pixz
를 압축 해제하고 xz
아카이브 xz
를 압축 해제 할 수 pixz
있습니다. 그러나, 명령 줄 옵션에 대한 xz
과 pixz
다르다.
pixz
.
lzop 은 단일 스레드이지만 실행 가능한 옵션 일 수도 있습니다.
그것은 사용 매우 빠른 렘펠 - 지브 - oberhumer의 내 관찰에 gzip을보다 5-6 배 빠른 압축 알고리즘을.
참고 : 아직 멀티 스레드는 아니지만 1-4 코어 시스템에서 pigz보다 성능이 뛰어납니다. 그래서 귀하의 질문에 직접 답변하지 않더라도 게시하기로 결정했습니다. 시도해보십시오. 하나의 CPU 만 사용하고 약간 더 압축하면 CPU 병목 현상 문제를 해결할 수 있습니다. 나는 그것이 예를 들어 pigz보다 종종 더 나은 해결책이라는 것을 알았습니다.
실제로 대답은 아니지만 실제 시나리오에서 실제 HW 속도 gzip
와 속도를 비교하는 벤치 마크를 공유하는 것이 적절하다고 생각합니다 pigz
. pigz
내가 개인적으로 사용하기로 선택한 다중 스레드 진화와 마찬가지로 .
메타 데이터 :
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
(4c / 8t) + Nvme SSDXubuntu 17.10 (artful)
gzip
번역: 1.6
pigz
번역: 2.4
gzip
빨리
time gzip -1kN ./db_dump.sql
real 1m22,271s
user 1m17,738s
sys 0m3,330s
gzip
베스트
time gzip -9kN ./db_dump.sql
real 10m6,709s
user 10m2,710s
sys 0m3,828s
pigz
빨리
time pigz -1kMN ./db_dump.sql
real 0m26,610s
user 1m55,389s
sys 0m6,175s
pigz
최고 (아니요 zopfli
)
time pigz -9kMN ./db_dump.sql
real 1m54,383s
user 14m30,435s
sys 0m5,562s
pigz
+ zopfli
알고리즘
time pigz -11kMN ./db_dump.sql
real 171m33,501s
user 1321m36,144s
sys 0m29,780s
결론 zopfli
은 압축이 그다지 중요하지 않은 디스크 공간을 위해 많은 시간이 걸리기 때문에 알고리즘을 권장 하지 않습니다.
결과 파일 크기 :