Tôi tìm thấy nó:
Lý do là gziphoạt động trên (về tốc độ CPU so với tốc độ tìm kiếm HD hiện nay) kích thước bộ đệm cực thấp .
Nó đọc một vài KB từ tệp đầu vào, nén nó và xóa nó sang tệp đầu ra. Với thực tế là điều này đòi hỏi phải tìm kiếm ổ cứng, chỉ một vài thao tác có thể được thực hiện mỗi giây.
Lý do hiệu suất của tôi không mở rộng là vì đã có người gziptìm kiếm như điên.
Tôi đã giải quyết vấn đề này bằng cách sử dụng buffertiện ích unix :
buffer -s 100000 -m 10000000 -p 100 < file1.json | gzip > file1.json.gz
Bằng cách đệm rất nhiều đầu vào trước khi gửi nó đến gzip, số lượng tìm kiếm nhỏ có thể giảm đáng kể. Các tùy chọn:
-svà -mphải chỉ định kích thước của bộ đệm (tôi tin rằng nó được tính bằng KB, nhưng không chắc chắn)
-p 100 đảm bảo rằng dữ liệu chỉ được chuyển đến gzip sau khi bộ đệm được lấp đầy 100%
Chạy song song bốn trong số này, tôi có thể nhận được thông lượng 4 * 25 MB / s, như mong đợi.
Tôi vẫn tự hỏi tại sao gzip không cho phép tăng kích thước bộ đệm - theo cách này, nó khá vô dụng nếu chạy trên đĩa quay.
EDIT : Tôi đã thử một vài hành vi chương trình nén:
bzip2 chỉ xử lý 2 MB / s do nén mạnh hơn / nhiều CPU hơn
lzop dường như cho phép bộ đệm lớn hơn: 70 MB / s mỗi lõi và 2 lõi có thể tối đa hóa HD của tôi mà không cần tìm kiếm quá nhiều
ddlàm như vậy?