ceph-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Pyramid erasure code description revisited
@ 2014-05-31 17:10 Loic Dachary
  2014-06-02 12:20 ` Andreas Joachim Peters
  2014-06-05 14:05 ` Locally repairable code description revisited (was Pyramid ...) Loic Dachary
  0 siblings, 2 replies; 10+ messages in thread
From: Loic Dachary @ 2014-05-31 17:10 UTC (permalink / raw)
  To: Andreas-Joachim Peters; +Cc: Ceph Development

[-- Attachment #1: Type: text/plain, Size: 1933 bytes --]

Hi Andreas,

After a few weeks and a fresh eye, I revisited the way pyramid erasure code could be described by the system administrator. Here is a proposal that is hopefully more intuitive than the one from the last CDS ( http://pad.ceph.com/p/cdsgiant-pyramid-erasure-code ).

These are the steps to create all coding chunks. The upper case letters are data chunks and the lower case letters are coding chunks.

"__ABC__DE_" data chunks placement

Step 1
"__ABC__DE_"
"_yVWX_zYZ_" K=5, M=2
"_aABC_bDE_"

Step 2
"_aABC_bDE_"
"z_XYZ_____" K=3, M=1
"caABC_bDE_"

Step 3
"caABC_bDE_"
"_____zXYZ_" K=3, M=1
"caABCdbDE_"

Step 4
"caABCdbDE_"
"_____WXYZz" K=4, M=1
"caABCdbDEe"

The interpretation of Step 3 is as follows:

Given the output of the previous step ( "caABC_bDE_" ), the bDE chunks are considered to be data chunks at this stage and they are marked with XYZ. A K=3, M=1 coding chunk is calculated and placed in the chunk marked with z ( "_____zXYZ_" ). The output of this coding step is the previous step plus the coding chunk that was just calculated, named d ( "caABCdbDE_" ). 

This gives the flexibility of deciding wether or not a coding chunk from a previous step is used as data to compute the coding chunk of the next step. It also allows for unbalanced steps such as step 4.

For decoding, the steps are walked from the bottom up. If E is missing, it can be reconstructed from dbD.e in step 4 and the other steps are skipped because it was the only missing chunk. If AB are missing, all steps that have not be used to encode it are ignored, up to step 2 that will fail to recover them because M=1 and yeild to step 1 that will use a..CbDE successfully because M=2.

Giving up the recursion and favor iteration seems to simplify how it can be explained. And I suspect the implementation is also simpler. What do you think ?

Cheers

-- 
Loïc Dachary, Artisan Logiciel Libre


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-06-09 21:40 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-31 17:10 Pyramid erasure code description revisited Loic Dachary
2014-06-02 12:20 ` Andreas Joachim Peters
2014-06-02 13:14   ` Loic Dachary
     [not found]     ` <1401733713.18379.YahooMailNeo@web165006.mail.bf1.yahoo.com>
2014-06-02 18:49       ` Loic Dachary
2014-06-05 14:05 ` Locally repairable code description revisited (was Pyramid ...) Loic Dachary
2014-06-06 11:46   ` Andreas Joachim Peters
2014-06-06 14:30     ` Loic Dachary
2014-06-09 20:18       ` Gregory Farnum
2014-06-09 20:38         ` Samuel Just
2014-06-09 21:40           ` Loic Dachary

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).