All of lore.kernel.org
 help / color / mirror / Atom feed
* FW: Intel ISA-L EC plugin
       [not found] <3472A07E6605974CBC9BC573F1BC02E4AE747D5B@CERNXCHG44.cern.ch>
@ 2014-07-02 17:54 ` Andreas Joachim Peters
  2014-07-02 18:33   ` Loic Dachary
  0 siblings, 1 reply; 2+ messages in thread
From: Andreas Joachim Peters @ 2014-07-02 17:54 UTC (permalink / raw)
  To: ceph-devel@vger.kernel.org

Hi Sage & Loic et al ...
getting some support from Paul Luse I have finished the refactoring of the EC ISA-L plug-in.


The essential ISA-L v 2.10 sources are now part of the source tree and it builds a single shared library which is portable on platforms with varying CPU extensions (SSE2, AVX, AVX2). I tested on various Intel & AMD processor types.

The build of the plug-in is coupled to the presence of 'yasm' similiar to the crc32c extension in common/ ... (I couldn't build ISA-L on ARM).

It supports two encoding matrices Vandermonde & Cauchy. The techniques are called similar to the one used by Loic in Jerasure "reed_sol_van" & "cauchy". "cauchy" is the default.

Greg Tucker from Intel pointed me to the proper ( and faster ) way of decoding if parity chunks are missing.


??? How do we proceed? I currently rebase against firefly and use its API definition or should this be for a later release with Loic's refactored interface? Shall I make a pull request or shall I hand it over to Loic and he takes care to do the integration including QA etc ...?

??? I have still an open question on the library optimization for decoding(=repair). If you call decoding for a certain set one needs to do a matrix inversion coupled to the given set. If the payload is like 1M the computation of the decoding matrix does not
 play a role. If the payload is 4k it plays a role. Can I assume that the plugin will be called concurrently for the same object with the same set of chunks or would the plugin be called interleaved for many objects with changing chunk configurations? Is the
 EC object called single-threaded or by a thread pool? Will backfilll use 4k IOs or larger?

I would either commit the simple cache mechanism caching the last computed erasure configuration & corresponding matrix or put an LRU cache for the last computed matrices. I prototyped both, but would stick to the simplest required.

Cheers Andreas.

































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

* Re: FW: Intel ISA-L EC plugin
  2014-07-02 17:54 ` FW: Intel ISA-L EC plugin Andreas Joachim Peters
@ 2014-07-02 18:33   ` Loic Dachary
  0 siblings, 0 replies; 2+ messages in thread
From: Loic Dachary @ 2014-07-02 18:33 UTC (permalink / raw)
  To: Andreas Joachim Peters, ceph-devel@vger.kernel.org

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

Hi Andreas,

On 02/07/2014 19:54, Andreas Joachim Peters wrote:> Hi Sage & Loic et al ...
> getting some support from Paul Luse I have finished the refactoring of the EC ISA-L plug-in.
> 
> 
> The essential ISA-L v 2.10 sources are now part of the source tree and it builds a single shared library which is portable on platforms with varying CPU extensions (SSE2, AVX, AVX2). I tested on various Intel & AMD processor types.
> 
> The build of the plug-in is coupled to the presence of 'yasm' similiar to the crc32c extension in common/ ... (I couldn't build ISA-L on ARM).
> 
> It supports two encoding matrices Vandermonde & Cauchy. The techniques are called similar to the one used by Loic in Jerasure "reed_sol_van" & "cauchy". "cauchy" is the default.
> 
> Greg Tucker from Intel pointed me to the proper ( and faster ) way of decoding if parity chunks are missing.

Great !

> ??? How do we proceed? I currently rebase against firefly and use its API definition or should this be for a later release with Loic's refactored interface? Shall I make a pull request or shall I hand it over to Loic and he takes care to do the integration including QA etc ...?

It would be great if you could rebase against https://github.com/dachary/ceph/tree/wip-7238-lrc. It contains the base class that will help us share code common to plugins. I hope it will be merged in the next few days. During the last CDS the remapping of the data chunks has been agreed on and the only reason why it is not yet merged is that integration tests must first show it does not break anything and is fully backward compatible.

Cheers

> ??? I have still an open question on the library optimization for decoding(=repair). If you call decoding for a certain set one needs to do a matrix inversion coupled to the given set. If the payload is like 1M the computation of the decoding matrix does not
>  play a role. If the payload is 4k it plays a role. Can I assume that the plugin will be called concurrently for the same object with the same set of chunks or would the plugin be called interleaved for many objects with changing chunk configurations? Is the
>  EC object called single-threaded or by a thread pool? Will backfilll use 4k IOs or larger?
> 
> I would either commit the simple cache mechanism caching the last computed erasure configuration & corresponding matrix or put an LRU cache for the last computed matrices. I prototyped both, but would stick to the simplest required.
> 
> Cheers Andreas.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 
Loïc Dachary, Artisan Logiciel Libre


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

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

end of thread, other threads:[~2014-07-02 18:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <3472A07E6605974CBC9BC573F1BC02E4AE747D5B@CERNXCHG44.cern.ch>
2014-07-02 17:54 ` FW: Intel ISA-L EC plugin Andreas Joachim Peters
2014-07-02 18:33   ` Loic Dachary

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.