가장 빠른 GZIP 유틸리티


18

가장 빠른 gzip(또는 zip) 유틸리티를 찾고 있습니다. 나는 빈 공간에서 95 %의 LVM 볼륨을 가지고 0있으므로 압축이 매우 쉽습니다. 가장 빠른 솔루션을 찾고 있는데를 제외하고 압축을 실제로 신경 쓰지 않습니다 0.

나는 gzip -1(와 동일 gzip --fast) 알고 있지만 더 빠른 방법이 있는지 궁금합니다.

감사.

편집 : 몇 가지 검사 후에, 나는 비교 gzip -1, lzop -1그리고 pigz -1서로에 다음과 같은 결과에 와서 :

돼지 :

time dd if=/dev/VPS/snap | pigz -1 | ssh backup-server "dd of=/home/backupvps/snap.pigz"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 2086.87 seconds, 25.7 MB/s
7093985+266013 records in
7163950+1 records out
3667942715 bytes (3.7 GB) copied, 2085.75 seconds, 1.8 MB/s

real    34m47.147s

LZOP :

time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1829.31 seconds, 29.3 MB/s
7914243+311979 records in
7937728+1 records out
4064117245 bytes (4.1 GB) copied, 1828.08 seconds, 2.2 MB/s

real    30m29.430s

GZIP :

time dd if=/dev/VPS/snap | gzip -1 | ssh backup-server "dd of=/home/backupvps/snap_gzip.img.gz

104857600+0 records in
104857600+0 records out
53687091200 bytes (54 GB) copied, 1843.61 seconds, 29.1 MB/s
7176193+42 records in
7176214+1 records out
3674221747 bytes (3.7 GB) copied, 1842.09 seconds, 2.0 MB/s

real    30m43.846s

편집 2 :

이것은 내 초기 질문과 다소 관련이 없지만 time dd if=/dev/VPS/snap | lzop -1 | ssh backup-server "dd of=/home/backupvps/snap.lzop"(블록 크기가 16M으로 변경됨)을 사용하면 시간이 real 18m22.442s!


1
주의 : time그러한 방식으로 사용하는 것은 다소 불공평합니다 . 사용 된 dd의 처리량이 pigz다른 두 처리량 보다 낮습니다.
Henk

@ Devator : 타이밍을 살펴보면 암호화 된 ssh 터널을 통해 바이트를 푸시하는 것이 병목 현상이라고 결론 지을 수 있습니다. "-c"(압축) 플래그와 함께 ssh를 사용하고 사전 압축기를 방정식 밖으로 빼내려고 했습니까? 더 빠른 암호화 알고리즘으로 전환 할 수도 있습니다. 그 외에도 : ssh-tunnel없이 다시 벤치 마크 (예 : 출력 싱크로 / dev / null 사용)
akira

참고로 스파 스 파일 을 사용할 수 있습니까? 그런 다음 0은 디스크 공간을 차지하지 않습니다. 파일 시스템 드라이버가 0을 보간하고 디스크에서 읽을 필요가 없기 때문에 압축 속도도 빨라집니다.
Li-aung Yip

@ Li-aungYip "파일"은 LVM 볼륨이므로 그렇게 생각하지 않습니다.
Devator

아, 알겠습니다 계속하십시오!
Li-aung Yip

답변:



23

개인적으로 사용하지는 않았지만 병렬 gzip을 사용하면 속도가 약간 빨라질 수 있습니다.

gzip의 병렬 구현을 나타내는 pigz는 데이터를 압축 할 때 여러 프로세서와 여러 코어를 활용하여 gzip을 완전히 대체합니다.


1
나는 정기적으로 사용하고 여러 코어를 사용할 수 있다면 pigz를 절대적으로 권장합니다. 압축 수준을 변경하는 것 외에는 압축 속도를 높이는 가장 접근하기 쉬운 방법입니다.
jgrundstad

3
사이트가 조금 이상해 보입니다. 그러나 속지 마십시오. pigz는 gzip 및 zlib 개발자 Mark Adler가 작성했습니다.
so_mv

이 시점에서 프로젝트가 포기 된 것 같습니다.
AlexLordThorsen

나는 그것을 "안정적인"것으로 생각하는 것을 선호합니다. 자주 업데이트되지는 않지만 업데이트됩니다.
Alan De Smet

7

Parallel Gzip (Pascal linked in) 또는 Parallel BZIP를 사용해 볼 수 있습니다.
이론적으로 BZIP는 텍스트보다 훨씬 낫기 때문에 pbzip 을 사용해 볼 수 있습니다 .


2

디스크가 30MB / s로 제한됩니다

모든 압축기는 충분합니다. 약간 느리지 만 전 방향 bzip2를 사용하여 네트워크 전송을 줄일 수도 있습니다.

$dd if=/dev/zero bs=2M count=512 | pigz -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 9.12679 s, 118 MB/s
8192+7909 records in
9488+1 records out
4857870 bytes (4.9 MB) copied, 9.13024 s, 532 kB/s
$dd if=/dev/zero bs=2M count=512 | bzip2 -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 37.4471 s, 28.7 MB/s
12+1 records in
12+1 records out
6533 bytes (6.5 kB) copied, 37.4981 s, 0.2 kB/s
$dd if=/dev/zero bs=2M count=512 | gzip -1 | dd > /dev/null
512+0 records in
512+0 records out
1073741824 bytes (1.1 GB) copied, 14.305 s, 75.1 MB/s
9147+1 records in
9147+1 records out
4683762 bytes (4.7 MB) copied, 14.3048 s, 327 kB/s

rsync를 고려 했습니까? 차이를 체크섬 한 다음 gzipping 만합니다.


1
내 디스크는 30MB / s로 제한되지 않습니다. 난 그냥 테스트를 실행했습니다 : pigz -1: 1073741824 bytes (1.1 GB) copied, 8.6779 seconds, 124 MB/sgzip -1: 1073741824 bytes (1.1 GB) copied, 11.6724 seconds, 92.0 MB/s. 나는 rsync에 대해 생각했지만 파일의 차이를 확인하고 대부분의 시간이 많이 바뀌 었으므로 도움이되지 않을 것입니다.
Devator

0을 전송하는 경우 bzip2 인코딩이 얼마나 인상적입니까? 어느 쪽에서 속도를 측정 하는가 .... 4Mbit / s의 pigz는 일반적인 DSL 회선에 비해 너무 많을 수 있습니다 ... 디스크가 그렇게 빠르면 더 심해집니다.
ZaB

2

Re : lzop std 설정에서 속도가 느립니다 ... 조정 시간을 반으로 줄일 수 있습니다. 그러나 blosc라는 훨씬 더 빠른 교체가 있습니다.

https://github.com/FrancescAlted/blosc

흠 ...이 글을 게시하고 답장을받는 데 걸린 시간은 아마도 두 배나 절약 할 수있는 시간의 두 배일 것입니다 ... 이제 커널을 다시 컴파일하는 동안 실례합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.