To compile: gcc pigz17.c -lpthread -lz -o pigz Sample command line: pigz -p 10 -v (filename) The default 32 threads seems to be kind of high, drives load up quite a bit, while 10 threads at least in a simple test on a 2GB file kept load a lot lower but still kept the CPUs busy at 100% utilization on a dual core system. YMMV. original source: http://zlib.net/pigz17.c.gz if that doesn't exist there may be a new version, try pibz18.c.gz 19.c.gz ..etc Usage: pigz [options] [files ...] will compress files in place, adding the suffix '.gz'. If no files are specified, stdin will be compressed to stdout. pigz does what gzip does, but spreads the work over multiple processors and cores when compressing. Options: -0 to -9, --fast, --best Compression levels, --fast is -1, --best is -9 -b, --blocksize mmm Set compression block size to mmmK (default 128K) -p, --processes n Allow up to n compression threads (default 32) -i, --independent Compress blocks independently for damage recovery -R, --rsyncable Input-determined block locations for rsync -d, --decompress Decompress the compressed input -t, --test Test the integrity of the compressed input -l, --list List the contents of the compressed input -f, --force Force overwrite, compress .gz, links, and to terminal -r, --recursive Process the contents of all subdirectories -s, --suffix .sss Use suffix .sss instead of .gz (for compression) -z, --zlib Compress to zlib (.zz) instead of gzip format -k, --keep Do not delete original file after processing -c, --stdout Write all processed output to stdout (won't delete) -N, --name Store/restore file name and mod time in/from header -n, --no-name Do not store or restore file name in/from header -T, --no-time Do not store or restore mod time in/from header -q, --quiet Print no messages, even on error -v, --verbose Provide more verbose output