[Mnet-devel] erasure code optimization project
Zooko
zooko at zooko.com
Mon Aug 2 11:39:32 BST 2004
Here is a new darcs repository (as always, if you don't have darcs, you
can fetch the files with wget or with a web browser):
http://mnetproject.org/repos/ecopt
Here is the contents of the README file:
This is an experiment in optimizing erasure codes. The motivation is
to learn
about erasure codes and hopefully come up with a faster implementation
for the
use of Mnet [1].
I took erasure code implementations from Rizzo [2] and from Plank [3].
I intend
to compare them and to try optimizing both of them, then use the
fastest one in
Mnet.
The current status of this project is that I've written a driver script
(copied
from Plank's code) to invoke Rizzo's code on a file and write the
results into a
file.
To run this preliminary benchmark yourself:
1. build:
cd plankerasureimpl && make && cd rizzoerasureimpl && make
2. get a test file: e.g.
python -c "open('r1','w').write(open('/dev/urandom','r').read(2**17))"
3. run one of the encoders and see how long it takes:
time ./plankerasureimpl/rs_encode_file r1 84 170 x
4. make a temporary directory to hold a subset of the blocks, cd into
that
directory, and use the "randsel.py" script to make symlinks to a
random
subset of the blocks:
mkdir testrun && cd testrun && ../randsel.py x 84
5. run the appropriate decoder and see how long it takes:
time ../plankerasureimpl/rs_decode_file x > r1.decoder 2>decode.log
Now do likewise with the other implementation. Now optimize one of
them and
send me the patch!
I intend to do that last step myself, but first I'm going to help an
Mnet newbie
set up a private Mnet network, and update the Mnet docs so that the
next such
newbie won't need my help.
Regards,
Zooko
zooko at zooko.com
[1] http://mnetproject.org/
[2] http://info.iet.unipi.it/~luigi/fec.html
[3] http://www.cs.utk.edu/~plank/plank/papers/CS-03-510.html
More information about the Mnet-devel
mailing list