Ceph 擦除码 jerasure 插件基准测试

loic

Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz 处理器(以及所有 SIMD 兼容的 Intel 处理器)上,jerasure 插件的 Reed Solomon Vandermonde 技术,即 Ceph Firefly 中的 默认设置,表现更好。

Reed Solomon vs Cauchy

该图表用于解码擦除编码的对象。 Y 的单位是 GB/s,而 X 代表 K/M/擦除数。 例如,10/3/2 表示 K=10,M=3 和 2 个擦除,意味着每个对象被切分成 K=10 个相等的分块,并计算了 M=3 个奇偶校验分块,jerasure 插件用于从丢失两个分块(即 2 个擦除)中恢复。

基准测试报告

bench.sh 的输出在根目录的源文件中的 HTML 页面中呈现,使用了 Flot

  • SIMD 优化

    TOTAL_SIZE=$((4 * 1024 * 1024 * 1024)) \ CEPH_ERASURE_CODE_BENCHMARK=src/ceph_erasure_code_benchmark \ PLUGIN_DIRECTORY=src/.libs \ qa/workunits/erasure-code/bench.sh fplot jerasure

  • 无优化

    PARAMETERS='--parameter jerasure-variant=generic' \ TOTAL_SIZE=$((4 * 1024 * 1024 * 1024)) \ CEPH_ERASURE_CODE_BENCHMARK=src/ceph_erasure_code_benchmark \ PLUGIN_DIRECTORY=src/.libs \ qa/workunits/erasure-code/bench.sh fplot jerasure

结果解释

基准测试以两个图表呈现,一个用于编码性能,另一个用于解码性能。 Y 轴是处理的数据量,单位为 GB/s:越大越好。

simd encode 4KB

X 轴对于每个点都有一个 K/M 对,从左侧最简单的(K=2,M=1,这也是 Firefly 中的默认设置)到右侧需要更多努力的(K=10,M=4)。

simd optimized decode 4KB

解码性能图表的 X 轴进一步细分为显示从越来越多的擦除中恢复的成本。 例如,对于 Reed Solomon4/3/1 点显示,使用 K=4、M=3 编码的对象丢失一个分块(一个擦除)可以以超过 0.75 GB/s 的速率解码。 下一点,4/3/2 显示,当有两个擦除时,速率降至 0.75 GB/s 以下。 共享相同 K/M 对的点用一条线连接。

SIMD 改进和之前的基准测试

jerasure 版本 2 可以使用 SIMD 来加速编码和解码。 在没有 SIMD 的情况下,Cauchy 技术 比使用 1MB 对象时的 Reed Solomon Vandermonde 技术表现更好。

generic decode 1MB

使用 SIMD 时,Reed Solomon Vandermonde 技术更快。

之前的 jerasure 基准测试 是在版本一上进行的,但它们也表明 Cauchy 技术更快。 但是,这些基准测试是在实施 擦除编码池 之前进行的。 实际条带大小为 4KB,1MB 的结果仅用于与以前的结果进行比较。