gzip 압축 속도 향상


15

gzip프로세스 속도를 높일 수 있습니까?

나는 사용하고있다

mysqldump "$database_name" | gzip > $BACKUP_DIR/$database_name.sql.gz

데이터베이스를 디렉토리에 백업합니다 $BACKUP_DIR.

맨 페이지는 다음과 같이 말합니다.

-# --fast --best
지정된 숫자를 사용하여 압축 속도를 조절합니다. # -1 또는 --fast는 가장 빠른 압축 방법을 표시하고 (압축이 적음) -9 또는 --best는 가장 느린 압축 방법을 나타냅니다 ( 최고의 압축). 기본 압축 수준은 -6입니다 (즉, 속도를 희생하여 높은 압축률로 바이어스 됨).

  • 사용하는 것이 얼마나 효과적 --fast입니까?
  • 이것이 현대 컴퓨터의 CPU 사용량을 효과적으로 낮추고 있습니까?

내 테스트 결과

나는 가속을 보지 못했습니다.

  • 7 분 47 초 (기본 비율 -6)
  • 8 분 36 초 (비율 --fast= 9)

빠른 압축을 사용하는 데 시간이 더 걸리는 것 같습니다.

압축률이 높을수록 실제로 속도가 느려집니다.

  • 11 분 57 초 (비율 --best= 1)

아이디어를 얻은 후에도 lzop테스트했으며 실제로 더 빠릅니다.

  • 6 분 14 초 lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo


CPU 시간 또는 전체 (시계) 시간이 걱정 되십니까? --best는 9, --fast는 1입니다.
Stéphane Chazelas

3
gzip -1충분히 빠르지 않다면lzop
Stéphane Chazelas

1
이 벤치 마크를 보면lz4 더 빠른 것도 있습니다 . 그러나 lzop과 lz4에는 훨씬 더 많은 메모리가 필요합니다. 큰 데이터베이스를 압축 할 때 lz4가 gzip보다 압축시 30 배 많은 메모리를 사용하는 것이 1GB RAM 단일 코어에서 문제가됩니까?
rubo77

lz4에는 많은 메모리가 필요하지 않습니다. lz4c 유틸리티를 사용하는 경우 거의 모든 메모리가 I / O 버퍼에 할당됩니다. 더 작은 버퍼 (64KB 버퍼의 경우 옵션 -B4)를 사용하여이를 줄일 수 있습니다. 버퍼가 작을수록 압축 성능이 저하되므로 체인 블록 압축 (옵션 -BD)을 활성화하는 것이 좋습니다. 참조 : fastcompression.blogspot.fr/2013/08/…
Cyan

답변:


19

pigz를 사용하는 멀티 코어 머신을 사용하는 경우 기존 gzip보다 훨씬 빠릅니다.

gzip의 병렬 구현을 의미하는 pigz는 데이터를 압축 할 때 여러 프로세서와 여러 코어를 활용하여 gzip을 완전히 대체합니다. pigz는 Mark Adler가 작성했으며 zlib 및 pthread 라이브러리를 사용합니다.

Pigz ca는 gzip의 드롭 인 대체품으로 사용됩니다. 압축 해제 만 아니라 압축 만 병렬 처리 할 수 ​​있습니다.

pigz를 사용하면 명령 행이됩니다

mysqldump "$database_name" | pigz > $BACKUP_DIR/$database_name.sql.gz

단일 코어에서 프로세스 속도가 향상됩니까?
rubo77

@ rubo77-이것은 여러 코어에서 압축을 팬 아웃하지 않습니다.
slm

pigzCPU 사용량을 늘리지 만 멀티 프로세서에서 걸리는 클럭 시간을 줄입니다
Stéphane Chazelas

실제로, 그것은 종종 원하는 것입니다. 그리고 일반적으로 (하드웨어에 따라) gzip 압축은 CPU 바운드 (단일 스레드 성능)이고 pigz 압축은 종종 IO 바운드입니다.
Marco

5

보낸 사람 man gzip:

   -# --fast --best
          Regulate  the  speed  of compression using the
          specified digit #, where -1  or  --fast  indi‐
          cates  the  fastest  compression  method (less
          compression) and -9 or  --best  indicates  the
          slowest compression method (best compression).
          The default compression level is -6 (that  is,
          biased  towards high compression at expense of
          speed).

3

데이터베이스 잠금 문제로 인해 속도가 빠르고 데이터를 일시적으로 압축하지 않은 디스크를 보유 할만큼 빠르거나 큰 디스크가있는 경우이 방법을 대신 사용할 수 있습니다.

mysqldump "$database_name" > "$BACKUP_DIR"/"$database_name".sql
nice gzip "$BACKUP_DIR"/"$database_name".sql &

즉, 백업을 먼저 저장 한 다음 (디스크가 빠르고 CPU가 느린 경우 백업하는 것보다 빠릅니다) 백그라운드에서 gzipping이 발생합니다.

압축에 걸리는 시간이 더 이상 (직접적으로) 중요하지 않기 때문에 더 나은 압축 알고리즘을 사용할 수도 있습니다.

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