Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osd: erasure code benchmark tool #933

Merged
7 commits merged into from Dec 20, 2013
Merged

osd: erasure code benchmark tool #933

7 commits merged into from Dec 20, 2013

Commits on Dec 20, 2013

  1. osd: conditionally disable dlclose of erasure code plugins

    When profiling, tools such as valgrind --tool=callgrind require that the
    dynamically loaded libraries are not dlclosed so they can collect usage
    information.
    
    The public ErasureCodePluginRegistry::disable_dlclose boolean is introduced
    for this purpose.
    
    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    ff9455b View commit details
    Browse the repository at this point in the history
  2. osd: better performances for the erasure code example

    The XOR based example is ten times slower than it could because it uses
    the buffer::ptr[] operator. Use a temporary char * instead. It performs
    as well as jerasure Reed Solomon when decoding with a single erasure:
    
    $ ceph_erasure_code_benchmark \
       --plugin example  --parameter erasure-code-directory=.libs \
       --parameter erasure-code-technique=example \
       --parameter erasure-code-k=2 --parameter erasure-code-m=1 \
       --erasure 1 --workload decode --iterations 5000
    8.095007	5GB
    
    $ ceph_erasure_code_benchmark \
       --plugin jerasure  --parameter erasure-code-directory=.libs \
       --parameter erasure-code-technique=reed_sol_van \
       --parameter erasure-code-k=10 --parameter erasure-code-m=6 \
       --erasure 1 --workload decode --iterations 5000
    7.870990	5GB
    
    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    c7d8ba7 View commit details
    Browse the repository at this point in the history
  3. osd: set erasure code packet size default to 2048

    As shown in
    https://www.usenix.org/legacy/events/fast09/tech/full_papers/plank/plank_html/
    under "Impact of the Packet Size", the optimal for is in the order of 1k
    rather than the current default of 8. Benchmarks are required to find
    the actual optimum.
    
    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    a36bc5f View commit details
    Browse the repository at this point in the history
  4. osd: erasure code benchmark tool

    Implement the ceph_erasure_code_benchmark utility to:
    
    * load an erasure code plugin
    
    * loop over the encode/decode function using the parameters from the
      command line
    
    * print the number of bytes encoded/decoded and the time to process
    
    When decoding, random chunks ( as set with --erasures ) are lost on each
    run.
    
    For instance:
    
        $ ceph_erasure_code_benchmark \
           --plugin jerasure \
           --parameter erasure-code-directory=.libs \
           --parameter erasure-code-technique=reed_sol_van \
           --parameter erasure-code-k=2 \
           --parameter erasure-code-m=2 \
           --workload decode \
           --erasures 2 \
           --iterations 1000
        0.964759	1048576
    
    shows 1GB is decoded in 1second.
    
    It is intended to be used by other scripts to present a human readable
    output or detect performance regressions.
    
    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    a619fe9 View commit details
    Browse the repository at this point in the history
  5. 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>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    81dee1b View commit details
    Browse the repository at this point in the history
  6. osd: erasure code benchmark is installed is part of ceph-test

    Add to the packaging for RPMs and DEBs
    
    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    42b4fe1 View commit details
    Browse the repository at this point in the history
  7. osd: git ignore erasure code benchmark binary

    Signed-off-by: Loic Dachary <loic@dachary.org>
    Loic Dachary committed Dec 20, 2013
    Copy the full SHA
    03693ac View commit details
    Browse the repository at this point in the history