Commit Graph

13 Commits

Author SHA1 Message Date
Bassam Tabbara
cc62c11a76 erasure-code: Remove SIMD flavors for jerasure and shec
By switching to a new gf-complete with SIMD runtime detection, we can now remove all the different flavors of jerasure and shec. This simplifies deployment and configuration of erasure coding, enables hetergenous OSDs, and enables us to take advantage of new performance improvements in jerasure without config/build changes.

This commit removes flavors from cmake, removes ErasureCodePluginSelect___, and fixes unit tests. There is now a single plugin for jerasure and a single plugin for shec.

SIMDExt.cmake was changed so that its a little more generic, and is not polluted with gf-complete specific CFLAG defines. The #define for SIMD instruction were based on gf-complete.

I also added a small init helper for jerasure that has code that was common between jerasure and shec.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-09-29 10:34:33 -07:00
Ali Maredia
4321bb64ed test: added env var setting to make check scripts
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-05-02 10:19:31 -04:00
Ali Maredia
59568e59ed cmake: encode-decode-non-regression.sh passing in cmake
Replaced relative paths in encode-decode-non-regression.sh
to work with CEPH_FOO environment variables set in
cmake.

Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-04-14 20:48:19 -04:00
Loic Dachary
39032ba9c6 qa: erasure-code-benchmark technique and plugin selection
Update the PLUGINS variable that was no longer used. Add the TECHNIQUES
variable to control which techniques are compared.

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-11-23 21:25:27 +01:00
Loic Dachary
a6433cc490 qa: erasure-code has --erasure-code-dir
It is used instead of the obsoleted --parameter directory= to specify
the location of the erasure code directory plugins.

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-11-23 20:21:42 +01:00
Loic Dachary
e4ca4685e0 tests: reduce make check verbosity
Move check-local scripts

   src/test/run-cli-tests
   encode-decode-non-regression.sh
   test/encoding/readable.sh

to check_SCRIPTS. Their output is captured in .log file when running
with a recent automake. This reduces the output of make check by an
order of magnitude.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-05-18 00:41:16 +02:00
Loic Dachary
28f0230c12 erasure-code: bench.sh compares isa & jerasure, vandermonde & cauchy
ISA and Jerasure can be compared for the default stripe width (4KB) and
the two most commonly used Reed Solomon matrices. Comparing the
bandwidth for large chunks (1MB) is not relevant because it is not
commonly used.

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-05-12 14:58:23 +02:00
Loic Dachary
94f9f60b1b tests: clone ceph-erasure-code-corpus from ceph
Instead of the http://github.com/dachary namespace. It is not an issue
in the common case because it should be cloned because it is in the
.gitmodules file with the proper namespace.

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

Signed-off-by: Loic Dachary <ldachary@redhat.com>
2015-02-11 13:34:15 +01:00
Loic Dachary
7638b15f23 erasure-code: workunit to check for encoding regression
Clone the archive of encoded objects and decode all archived objects, up
to and including the current ceph version.

http://tracker.ceph.com/issues/9420 Refs: #9420

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
2014-11-10 14:56:43 +01:00
Yuan Zhou
d13b478094 EC: Allow bench.sh to test ISA backend also
Update bench.sh/plot tool to cover ISA backend.
ISA will output a fake echinique 'cauchy_good' so the plot tool
don't need to be changed.

Signed-off-by: Yuan Zhou <yuan.zhou@intel.com>
2014-11-06 15:48:48 +08:00
Loic Dachary
8363a94a60 erasure-code: HTML display of benchmark results
The ceph_erasure_code_benchmark output is converted into a JSON series
suitable to display in HTML with the http://www.flotcharts.org/
library. A self contained copy of the HTML,JS,CSS files is included for
durability and can be used from the source tree with:

    CEPH_ERASURE_CODE_BENCHMARK=src/ceph_erasure_code_benchmark  \
    PLUGIN_DIRECTORY=src/.libs \
        qa/workunits/erasure-code/bench.sh fplot jerasure |
        tee qa/workunits/erasure-code/bench.js

and display with:

    firefox qa/workunits/erasure-code/bench.html

Signed-off-by: Loic Dachary <loic@dachary.org>
2014-08-04 11:42:05 +02:00
Loic Dachary
e11c3fcc3b erasure-code: rework benchmark suite
Expand the default suite to enumerate all cases that are relevant to the
current code base so that it is easier to consume. Namely it means

 * iterating over object sizes of 4KB (what is used by default) and
   1MB (what was previous benchmarked)
 * grouping results in series that would make sense to plot to get the
   behavior of a given technique for a series of K/M values and all
   possible erasures.

Instead of specifying the iterations to run, set the size of the total
data set to be exercised and compute the iterations by dividing it by
the object size. Since the object size varies, it is impractical to
preset the number of iterations and get meaningful results.

The PARAMETERS environment variable is added to enable the caller to
inject --parameter jerasure-variant=generic, for instance.

The packets size is calculated based on the other parameters. The
options are limited when packets are small (4KB) and it would not make a
real difference to give control over it. The packet size is capped to
a maximum of 3100 bytes which is roughly what has been found to be an
optimal value for large packets (1MB).

Signed-off-by: Loic Dachary <loic@dachary.org>
2014-08-04 11:42:01 +02:00
Loic Dachary
81dee1b67f osd: erasure code benchmark workunit
Display benchmark results for the default erasure code plugins, in a tab
separated CSV file. The first two column contain the amount of KB
that were coded or decoded, for a given combination of parameters
displayed in the following fields.

seconds	KB	plugin	k	m	work.	iter.	size	eras.
1.2	10	example	2	1	encode	10	1024	0
0.5	10	example	2	1	decode	10	1024	1

It can be used as input for a human readable report. It is also intented
to be used to show if a given version of an erasure code plugin performs
better than another.

The last column ( not shown above for brievety ) is the exact command
that was run to produce the result so it can be copy / pasted to
reproduce them or to profile.

Only the jerasure techniques mentionned in
https://www.usenix.org/legacy/events/fast09/tech/full_papers/plank/plank_html/
are benchmarked, the others are assumed to be less interesting.

Signed-off-by: Loic Dachary <loic@dachary.org>
2013-12-20 12:15:44 +01:00