我如何可以使用所有的CPU内核在我的服务器(有4个内核)的Linux Debian的OpenVZ的过度到使用gzip压缩更快的一个大文件 ?
我试图使用这些命令,但我不能把拼在一起
得到的芯数CORES=$(grep -c '^processor' /proc/cpuinfo)
在此多为分割大文件split -b100 file.big
这对于使用多核心gzip命令find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip --best
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip --best
我不知道这是否是为大文件优化gzip的过程中,最好的方式..
使用pigz
,并行的gzip实现。
不同于parallel
用gzip
, pigz
产生单一的gzip流。
尝试GNU并行
cat bigfile | parallel --pipe --recend '' -k gzip -9 >bigfile.gz
这将使用所有的内核并行gzip压缩。
通过比较的方式,在我的Mac OSX运行小牛的,并且使用固态磁盘6.4GB的文件,这个命令
time gzip -9 <bigger >/dev/null
需要4个分钟时间极23s和在50%左右使用1-2的CPU。
而下面的GNU水货版本
time cat bigger | parallel --pipe --recend '' -k gzip -9 >/dev/null
需要1分44秒,并保持所有8个核心80 +%忙。 一个非常显著差异,与GNU并行下的简单的方法的40%的时间运行英寸