Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-19905

FLR-EC: import ISA-L assembly versions to optimize EC calculations

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Unresolved
    • Medium
    • None
    • Lustre 2.18.0

    Description

      The lustre/ec/ec_base.[ch] code implements the baseline functionality for Erasure Coding, imported from the ISA-L library erasusre_code tree (LU-12189, LU-19465).

      This allows reasonable functional testing of the EC feature, but does not represent the optimized EC calculations that are possible. There are a wide variety of optimized assembly versions of the EC calculations for different CPU architectures (x86_64, aarch64, riscv) and instruction sets (SSE, AVX, AVX2, AVX512, etc) that could be used.

      It makes sense as the FLR-EC project draws to a conclusion on implementing the core functionality to look toward performance optimizations for this code.

      The optimized ISA-L EC implementations could be utilized directly by "lfs mirror extend/resync" in userspace with relatively little effort, likely some changes to the build chain to use the NASM compiler to build the code (maybe x86_64 only?), and selecting the right variant at runtime based on available CPU instructions.

      In the kernel, care must also be taken to properly save and restore the extended register set that the optimized calculations are using, so that IO threads recovering data via EC during reads do not clobber userspace applications that are also using these registers.

      Attachments

        Issue Links

          Activity

            People

              rsahlberg@whamcloud.com Ronnie Sahlberg
              adilger Andreas Dilger
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: