开发者
有奖调研
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

README

项目介绍

ISA-L(Intelligent Storage Acceleration Library)是一组针对存储应用程序优化的底层函数集合。ISA-L 包括:

  • 纠删码:快速的块级 Reed-Solomon 类型纠删码,支持GF(2^8) 中的任意编码/解码矩阵。
  • CRC(循环冗余校验):CRC的快速实现,支持六种不同的多项式:iscsi32ieee32t10difecma64iso64jones64rocksoft64
  • RAID:计算和操作常见RAID实现中的XOR和P+Q奇偶校验。
  • 压缩:快速的deflate兼容数据压缩。
  • 解压缩:快速的inflate兼容数据解压缩。
  • igzip:类似gzip的命令行应用程序,使用ISA-L加速。

针对华为鲲鹏服务器提供了更优的纠删码(EC)及 CRC iscsi32算法。具体优化如下:

CRC iscsi32(CRC32C)

基于 CPU 支持的指令集特性,及为了更充分地利用所有逻辑计算单元:

  • 针对鲲鹏920新型号处理器,将原来三路 CRC32 并行计算扩展为六路并行计算。
  • 在鲲鹏950处理器上,新增了一种结合 SVPMULL 指令与标量 CRC32 指令混合的实现方案。

除此之外,根据不同的用户场景需求做了计算的数据在缓存中命中率不高的优化:

  • 对于缓存不友好场景,在原来的实现上增加了配合更友好的缓存预取优化指令。

纠删码

校验块的生成采用的是查表法,根据表的特点,可以将第一个校验块的计算用异或操作替代,从而提高计算效率。目前只针对较为通用的 x+1、x+2、x+3 比例进行了计算优化。

CRC及纠删码优化前后测试结果

  • CRC32C 测试

    块大小 鲲鹏920新型号处理器-原始 鲲鹏920新型号处理器-优化 鲲鹏950处理器-原始 鲲鹏950处理器-优化
    4K 33304 MB/s 37633 MB/s 27050 MB/s 45428 MB/s
    8K 33531 MB/s 37890 MB/s 26815 MB/s 57314 MB/s
  • 纠删码测试

    块大小 数据块数量 校验块数量 编解码 950处理器-原始 950处理器-优化
    11904 10 1 编码1 15278 MB/s 79672 MB/s
    11904 10 1 解码1 15267 MB/s 77571 MB/s
    21824 4 2 编码1 19851 MB/s 33196 MB/s
    21824 4 2 解码1 8918 MB/s 95945 MB/s
    11904 8 3 编码1 13152 MB/s 20981 MB/s
    11904 8 3 解码1 13559 MB/s 81694 MB/s

测试步骤详见《用户指南》。

纠删码测试中的块大小由测试工具默认生成,生成规则为:128K / (数据块数量 + 校验块数量)。

目录结构

├── docs                                    # 项目文档目录
│   ├── LICENSE                             # 文档许可协议
│   └── zh                                  # 中文文档目录
│       ├── installation_guide.md           # 安装指南
│       ├── release_notes.md                # 版本说明书
│       └── user_guide.md                   # 用户指南
├── arm-for-ec-crc32c-optimization.patch    # 针对鲲鹏服务器的EC及CRC32C优化补丁文件
├── LICENSE                                 # 软件许可协议
└── README.md                               # 介绍文档

用户指南

关于ISA-L CRC及纠删码的性能测试详细步骤请参见《用户指南》。

版本说明

关于ISA-L的版本更新情况请参见《版本说明书》。

安装指南

ISA-L的编译安装请参见《安装指南》,完成ISA-L的编译安装。

免责声明

致本项目使用者

  • 本项目仅供调试和开发之用,使用者需自行承担使用风险,并理解以下内容:

    • 数据处理及删除:用户在使用本工具过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本工具产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本工具及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本工具及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本工具的个人或实体。使用本工具即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本工具。

  • 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本工具所产生的任何问题或疑问,请及时联系开发者。

致数据所有者

如果您不希望您的模型或数据集等信息在本项目中被提及,或希望更新本项目有关的描述,请在GitCode提交issue,我们将根据您的issue要求删除或更新您相关描述。衷心感谢您对本项目的理解和贡献。

License

本项目的代码适用于BSD-3-Clause许可证,具体请参见LICENSE文件

本项目的文档适用于CC-BY 4.0许可证,具体请参见LICENSE文件

贡献声明

欢迎大家为社区做贡献,如果使用过程中有任何问题/建议,或者需要反馈特性需求和bug报告,可以提交Issues联系我们,具体贡献方法可参考这里。同时也欢迎大家在讨论专区展开讨论交流。感谢您的支持。