tăng tốc độ nén gzip


15

Có thể tăng tốc gzipquá trình?

Tôi đang sử dụng

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

để sao lưu cơ sở dữ liệu vào một thư mục , $BACKUP_DIR.

trang này nói:

- # --fast --best
Điều chỉnh tốc độ nén bằng cách sử dụng chữ số # được chỉ định, trong đó -1 hoặc --fast chỉ ra phương pháp nén nhanh nhất (ít nén hơn) và -9 hoặc --best chỉ ra phương pháp nén chậm nhất ( nén tốt nhất). Mức nén mặc định là -6 (nghĩa là thiên về nén cao với chi phí tốc độ).

  • Làm thế nào hiệu quả nó sẽ được sử dụng --fast?
  • Đây có phải là giảm hiệu quả sử dụng CPU trên một máy tính hiện đại?

Kết quả kiểm tra của tôi

Tôi không nhận thấy bất kỳ sự tăng tốc nào:

  • 7 phút, 47 giây (với tỷ lệ mặc định -6)
  • 8 phút, 36 giây (với tỷ lệ --fast(= 9))

Vì vậy, có vẻ như mất nhiều thời gian hơn để sử dụng nén nhanh?

Chỉ nén cao hơn mới thực sự làm nó chậm lại:

  • 11 phút, 57 giây (với tỷ lệ --best(= 1))

Sau khi nhận được ý tưởng với lzoptôi cũng đã thử nghiệm điều đó và nó thực sự nhanh hơn:

  • 6 phút, 14 giây với lzop -1 -f -o $BACKUP_DIR/$database_name.sql.lzo


Bạn có quan tâm đến thời gian CPU hay tổng thể (đồng hồ) thời gian không? --best là 9, - nhanh là 1.
Stéphane Chazelas

3
Nếu gzip -1không đủ nhanh, hãy sử dụnglzop
Stéphane Chazelas

1
Ngoài ra còn lz4có nhanh hơn để xem điểm chuẩn này . Nhưng có vẻ như lzop và lz4 cần nhiều Bộ nhớ hơn. nó sẽ là một vấn đề trên lõi đơn RAM 1GB của tôi mà lz4 sử dụng bộ nhớ khi nén gấp 30 lần so với gzip khi tôi nén một số cơ sở dữ liệu lớn?
rubo77

lz4 không cần nhiều bộ nhớ. Nếu bạn đang sử dụng tiện ích lz4c, thì hầu như tất cả bộ nhớ được phân bổ cho bộ đệm I / O. Bạn có thể giảm điều đó bằng cách sử dụng bộ đệm nhỏ hơn (tùy chọn -B4 cho bộ đệm 64KB). Vì các bộ đệm nhỏ hơn cũng có nghĩa là nén kém hơn, nên rất hữu ích khi cho phép nén chuỗi khối (tùy chọn -BD). Xem: fastcompression.blogspot.fr/2013/08/ khăn
Cyan

Câu trả lời:


19

Nếu bạn có một máy đa lõi sử dụng pigz thì nhanh hơn nhiều so với gzip truyền thống.

pigz, viết tắt của việc triển khai song song gzip, là sự thay thế đầy đủ chức năng cho gzip khai thác nhiều bộ xử lý và nhiều lõi cho chuôi khi nén dữ liệu. pigz được viết bởi Mark Adler và sử dụng các thư viện zlib và pthread.

Pigz ca được sử dụng như là một thay thế thả vào cho gzip. Lưu ý hơn là chỉ có thể nén song song, không giải nén.

Sử dụng pigz dòng lệnh trở thành

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

điều này cũng tăng tốc quá trình trên một lõi đơn?
rubo77

@ rubo77 - không có quạt này ngoài việc nén trên nhiều lõi.
slm

pigztăng mức sử dụng CPU nhưng giảm thời gian xung nhịp cho nhiều bộ xử lý
Stéphane Chazelas

Thật vậy, và đó thường là những gì mong muốn. Và thông thường (tùy thuộc vào phần cứng), nén gzip bị ràng buộc CPU (hiệu năng đơn luồng) và nén pigz thường bị ràng buộc IO.
Marco

5

Từ 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

Nếu bạn cần nhanh vì vấn đề khóa cơ sở dữ liệu và bạn có đĩa nhanh / đủ lớn để tạm thời giữ dữ liệu không bị nén, bạn có thể cân nhắc sử dụng phương pháp này thay thế:

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

Tức là lưu trữ bản sao lưu trước (nhanh hơn gzipping nó NẾU đĩa nhanh và CPU chậm) và sau đó xảy ra hiện tượng gzipping trong nền.

Điều này cũng có thể cho phép bạn sử dụng thuật toán nén tốt hơn, vì nó không còn quan trọng (trực tiếp) thời gian nén mất bao lâu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.