SSE 优化用于 Ceph 中的纠删码

loic

jerasure 库是 Ceph 的默认纠删码插件。 伴随库 gf-complete 在编译时支持 SSE 优化,当编译器提供它们时(-msse4.2 等)。 jerasure(以及带有它的 gf-complete)插件使用各种级别的 SSE 特性 编译多次

  • jerasure_sse4 使用 SSE4.2、SSE4.1、SSSE3、SSE3、SSE2、SSE
  • jerasure_sse3 使用 SSSE3、SSE3、SSE2、SSE
  • jerasure_generic 不使用 SSE 指令

当 OSD 加载 jerasure 插件时,CPU 特性会被探测,并且根据它们的可用性选择 合适的插件
gf-complete 源代码被干净地划分为利用特定 SSE 特性的函数。 使用 ifunc 属性 在运行时半手动地单独选择每个函数应该很容易,而不会造成性能损失(因为选择是在函数第一次被调用时完成的,并为后续调用记录下来)。 采用如此细粒度的选择,就不需要编译三个插件,因为每个函数都会使用它需要的确切的标志集进行编译。