作者简介
万 喆 软件工程师
主要从事DPDK相关工作。
ISA-L PMD (librte_pmd_isal_comp) 使用Intel ISA-L library来进行压缩和解压缩。ISA-L lib实现了deflate算法,包括Deflate(压缩)和Inflate(解压缩)。
01
Features
ISA-L PMD 支持以下feature:
压缩/解压缩算法:
DEFLATE
Huffman编码类型:
FIXED
DYNAMIC
窗口大小支持:
32K
压缩级别说明:
ISA-L压缩级别已映射到相同的ZLIB压缩级别,也就是说ZLIB L1和ISA-LL1具有同样的压缩率。Compressdev level 0 意味着“不压缩”,即把未经压缩的数据加上deflate头后传送到输出buffer中。ISA-Llibrary目前不支持compressdevlevel 0。
Compressdev API 有10个级别,即0-9。ISA-L有四个压缩级别,0-3。
具体映射关系见下表:
备注:
上表仅适用于动态Huffman压缩的情形。
对于Huffman固定压缩,不管API level是多少内部始终使用ISA-L level 0。
02
限 制
目前不支持Compressdev level 0(不压缩)。
不支持Checksums。
03
安 装
安装步骤如下:
从https://github.com/01org/isa-l 下载Intel’s ISA-L library。
用ISA-Lautotools 编译library:
./autogen.sh
./configure
编译DPDK前安装ISA-L library:
make
sudomake install
如果要使用meson build, 需要把library sources中的libisal.pc文件拷贝到 “pkgconfig”:
cp isal/libisal.pc /usr/lib/pkgconfig/
04
初始化
要使能ISA-L PMD, 用户需要:
在config/common_base中设置 CONFIG_RTE_LIBRTE_PMD_ISAL=y
在应用中使用ISA-L PMD需要做如下操作:
在应用中调用rte_vdev_init("compress_isal")。
使用EAL选项--vdev="compress_isal",会内部调用rte_vdev_init() 。
上述两个函数调用中提供如下可选参数:
socket_id: 指定分配内存的socket(默认的socket_id是运行PMD的core所在socket)。