-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <loic@dachary.org>
- Loading branch information
Loic Dachary
committed
Aug 4, 2014
1 parent
3987ac2
commit c7daaaf
Showing
3 changed files
with
143 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters