Project

General

Profile

Feature #8475

erasure-code: oversized objects when using the Cauchy technique

Added by Loic Dachary almost 5 years ago. Updated over 4 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
OSD
Target version:
Start date:
05/30/2014
Due date:
% Done:

100%

Source:
Community (dev)
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

When the Cauchy technique is used, the alignment constraint and the default packetsize will inflate a 4KB object to 16KB

upgrade.txt View (7.47 MB) Loic Dachary, 07/01/2014 08:25 AM


Related issues

Duplicated by Ceph - Subtask #7363: erasure code: reduce the chunk size to a minimum Rejected 02/07/2014

Associated revisions

Revision c7daaaf5 (diff)
Added by Loic Dachary over 4 years ago

erasure-code: implement alignment on chunk sizes

jerasure expects chunk sizes that are aligned on the largest possible
vector size that could be used by SSE instructions, when available (
LARGEST_VECTOR_WORDSIZE == 16 bytes ).

For techniques derived from Cauchy, encoding and decoding is done by
subdividing the chunk into packets of packetsize bytes. The operations
are done w * packetsize bytes at a time. It follows that each chunk must
have a size that is a multiple of w * packetsize bytes.

For techniques derived from Vandermonde, it is enough for a chunk to be
a multiple of w * LARGEST_VECTOR_WORDSIZE.

ErasureCodeJerasure::get_alignment returns a size alignment constraint
that has to be enforced as a multiple of the object size. The resulting
object size then has to match the chunk constraints described above
although they have no relationship with K. For Cauchy, it leads to
excessive padding, making it impossible to set sensible parameters for
when the object size is small.

When the per_chunk_alignement data member is true, the semantic of
ErasureCodeJerasure::get_alignment is changed to return a size alignment
constraint to be enforced as a multiple of the chunk size. The
ErasureCodeJerasure::get_chunk_size method is modified to use the new
semantic when appropriate.

The jerasure-per-chunk-alignement parameter is parsed to set
per_chunk_alignement for the Vandermonde and Cauchy techniques.

The memory address of a chunk is implicitly aligned to a page boundary
because it is allocated with buffer::create_page_aligned.

http://tracker.ceph.com/issues/8475 Fixes: #8475

Signed-off-by: Loic Dachary <>

History

#1 Updated by Loic Dachary almost 5 years ago

  • % Done changed from 0 to 80

#2 Updated by Loic Dachary almost 5 years ago

  • Status changed from Need Review to Testing

#4 Updated by Loic Dachary almost 5 years ago

  • Status changed from Testing to Need Review
  • % Done changed from 80 to 90

the rados test suite is ok with the exception of 5 failure (none of which involve a configuration that has ec_pool in it) and one job stuck (no ec_pool either).

#5 Updated by Loic Dachary over 4 years ago

  • Tracker changed from Bug to Feature
  • Target version set to 0.82

#6 Updated by Ian Colle over 4 years ago

  • Target version changed from 0.82 to 0.83 cont.

#7 Updated by Loic Dachary over 4 years ago

upgrade tests mixed cluster with and without

#8 Updated by Loic Dachary over 4 years ago

  • Status changed from Need Review to Testing

#9 Updated by Loic Dachary over 4 years ago

  • Status changed from Testing to Need Review

upgrade/firefly-x/stress-split are working, except for what appears to be an unrelated rgw failure (http://tracker.ceph.com/issues/8698 ).

#11 Updated by Loic Dachary over 4 years ago

  • Status changed from Need Review to Testing

A firefly-x suite has been scheduled which includes the erasure coded workload to confirm that it succeeds.

#12 Updated by Samuel Just over 4 years ago

  • Target version changed from 0.83 cont. to 0.84

#13 Updated by Loic Dachary over 4 years ago

Rebased and repushed , running gitbuilder

#14 Updated by Loic Dachary over 4 years ago

scheduled upgrade:firefly-x:stress-split on plana to only use distro ubuntu

#15 Updated by Loic Dachary over 4 years ago

  • Status changed from Testing to Resolved
  • % Done changed from 90 to 100

Also available in: Atom PDF