[Beowulf] Accelerator for data compressing
Joe Landman
landman at scalableinformatics.com
Fri Oct 3 08:45:43 PDT 2008
Carsten Aulbert wrote:
> If 7-zip can only compress data at a rate of less than say 5 MB/s (input
> data) I can much much faster copy the data over uncompressed regardless
> of how many unused cores I have in the system. Exactly for these cases I
> would like to use all cores available to compress the data fast in order
> to increase the throughput.
This is fundamentally the issue. If the compression time plus the
tranmit time for the compressed data is greater than the transmit time
for the uncompressed data, then the compression may not be worth it.
Sure, if it is nothing but text files, you may get 60-80+% compression
rates. But for the case of (non-pathological) binary data, it might be
only a few percent. So in this case, even if you could get a few
percent delta from the compression, is that worth all the extra time you
spend to get it?
At the end of the day the question is how much lossless compression can
you do in a short enough time for it to be meaningful in terms of
transmitting the data?
>
> Do I miss something vital?
Nope. You got it nailed.
Several months ago, I tried moving about 600 GB of data from an old
server to a JackRabbit. The old server and the JackRabbit had a gigabit
link between them. We regularly saw 45 MB scp rates (one of the chips
in the older server was a Broadcom).
I tried this with and without compression. With compression (simple
gzip), the copy took something like 28 hours ( a little more than a
day). Without compression, it was well under 10 hours.
In this case, compression (gzip) was not worth it. The command I used
for the test was
uncompressed:
cd /directory
tar -cpf - ./ | ssh jackrabbit "cd /directory ; tar -xpvf - "
compressed:
cd /directory
tar -czpf - ./ | ssh jackrabbit "cd /directory ; tar -xzpvf - "
if you want to spend more time, use "j" rather than "z" in the options.
YMMV, but I have been convinced that, apart from specific use cases with
text only documents or documents known to compress quickly/well, that
compression prior to transfer may waste more time than it saves.
This said, if someone has a parallel hack of gzip or similar we can pipe
through, by all means, I would be happy to try it. But it would have to
be pretty darned efficient.
100MB/s means 1 byte transmitted,on average, in 10 nanoseconds. Which
means for compression to be meaningful, you would need to compute for
less time than that to increase the information density. Put another
way, 1 MB takes about 10 ms to send over a gigabit link. For
compression to be meaningful, you need to compress this 1MB in far less
than 10 ms and still transmit it in that time. Assuming that any
compression algorithm has to walk through data at least once, A 1 GB/s
memory subsystem takes about 1 ms to walk through this data at least
once, so you need as few passes as possible through the data set to
construct the compressed representation, as you will still have on the
order of 1E+5 bytes to send.
I am not saying it is hopeless, just hard for complex compression
schemes (bzip2, etc). When we get enough firepower in the CPU (or maybe
GPU ... hmmmm) the situation may improve.
GPU as a compression engine? Interesting ...
Joe
>
> Cheers
>
> Carsten
--
Joseph Landman, Ph.D
Founder and CEO
Scalable Informatics LLC,
email: landman at scalableinformatics.com
web : http://www.scalableinformatics.com
http://jackrabbit.scalableinformatics.com
phone: +1 734 786 8423 x121
fax : +1 866 888 3112
cell : +1 734 612 4615
More information about the Beowulf
mailing list