由於項目原因,經常需要壓縮和解壓縮大量的數據。10G規模以上,而默認tar打包和系統默認的壓縮工具是單線程的。服務器多核CPU完全利用不起來,瓶頸在CPU的處理上面。於是使用了pigz這個可以利用多核的並行壓縮工具。效果顯著,如果你也需要頻繁壓縮大量的數據,可以嘗試一下這個軟件。
1. 安裝
centos & redhat系
yum install pigz
debian & ubuntu系
apt-get install pigz
2. 使用
壓縮
其中packages是要壓縮的目錄,packages.tgz是壓縮後的名稱。
tar --use-compress-program=pigz -cpvf packages.tgz packages
解壓
tar --use-compress-program=pigz -xvf packages.tgz
3. 對比
我的服務器配置是:
CPU:Intel E5-2620 CPU,雙CPU,共12核,24線程
內存:32G內存
硬盤:RAID0 雙盤 SAS機械盤
壓縮包的大小是壓縮前33G,壓縮後10G
單線程解壓用時:5分36秒
命令:
time tar -xvf rpms.tgz
pigz多線程解壓用時: 3分2秒
命令:
time tar --use-compress-program=pigz -xvf rpms.tgz
單線程壓縮用時:20分35秒
命令:
time tar -cpzvf - packages | split -b 3500m -d - rpms.tgz
pigz多線程壓縮用時:2分8秒
命令:
time tar --use-compress-program=pigz -cpvf - packages | split -b 3500m -d - rpms.tgz
4. 總結
在我的服務器上面速度還是有很明顯提升的,尤其是壓縮時間,提高了10倍。解壓時間也提升了一倍左右。如果需要大量的壓縮和解壓縮工作,效率還是會提高很多的。