openEuler
RocksDB写场景中,当写入数据达到一定数量时,后台线程需要进行数据compaction操作,若compaction操作过慢时,会产生写停现象,导致数据暂时无法继续写入。在compaction过程中会调用压缩算法进行数据压缩,优化压缩算法能够有效提高compaction效率,从而提高RocksDB写性能。
鲲鹏加速引擎KAE(Kunpeng Accelerator Engine)是基于鲲鹏920处理器提供的硬件加速解决方案,其中包含了KAE加解密、KAEZip、KAELz4和KAEZstd。当RocksDB使用zstd作为compaction过程中的压缩算法时,使用KAEZstd可以对其压缩过程进行加速。
- License申请和安装,具体操作请参见《华为服务器iBMC许可证 使用指导》。
- 参见获取软件包获取KAE-kae2.zip,放置于“/home”目录下。
- 在“/home”目录下解压KAE-kae2.zip,进入KAE源码包目录。
cd /home unzip KAE-kae2.zip cd KAE-kae2
- 安装依赖。
yum install -y numactl-devel pciutils openssl-devel automake m4 perl libtool zlib lzma lz4 make patch yum install -y kernel-devel-5.10.0-216.0.0.115.oe2203sp4.aarch64
安装kernel-devel时,使用uname -r查询当前内核版本,kernel-devel必须与当前内核版本一致。
- 在KAE源码包目录中请参见以下步骤分模块进行安装。
- 安装内核驱动。
- 执行以下命令安装内核驱动。
sh build.sh driver
- 执行以下命令查看是否存在加速引擎文件系统。
ll /sys/class/uacce/
回显信息如下。
lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_hpre-2 -> ../../devices/pci0000:78/0000:78:00.0/0000:79:00.0/uacce/hisi_hpre-2 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_hpre-3 -> ../../devices/pci0000:b8/0000:b8:00.0/0000:b9:00.0/uacce/hisi_hpre-3 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_sec2-0 -> ../../devices/pci0000:74/0000:74:01.0/0000:76:00.0/uacce/hisi_sec2-0 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_sec2-1 -> ../../devices/pci0000:b4/0000:b4:01.0/0000:b6:00.0/uacce/hisi_sec2-1 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_zip-4 -> ../../devices/pci0000:74/0000:74:00.0/0000:75:00.0/uacce/hisi_zip-4 lrwxrwxrwx. 1 root root 0 Aug 22 17:14 hisi_zip-5 -> ../../devices/pci0000:b4/0000:b4:00.0/0000:b5:00.0/uacce/hisi_zip-5
- 执行以下命令查看驱动安装情况判断驱动是否安装成功。
lsmod | grep uacce
回显信息如下。
uacce 32768 3 hisi_sec2,hisi_qm,hisi_zip
- 执行以下命令安装内核驱动。
- 安装用户态驱动。
- 执行以下命令安装用户态驱动。
sh build.sh uadk
- 执行以下命令查看用户驱动是否安装成功。
ll /usr/local/lib/libwd*
回显信息如下。
-rwxr-xr-x. 1 root root 961 Aug 22 17:23 /usr/local/lib/libwd_comp.la lrwxrwxrwx. 1 root root 19 Aug 22 17:23 /usr/local/lib/libwd_comp.so -> libwd_comp.so.2.6.0 lrwxrwxrwx. 1 root root 19 Aug 22 17:23 /usr/local/lib/libwd_comp.so.2 -> libwd_comp.so.2.6.0 -rwxr-xr-x. 1 root root 377872 Aug 22 17:23 /usr/local/lib/libwd_comp.so.2.6.0 -rwxr-xr-x. 1 root root 973 Aug 22 17:23 /usr/local/lib/libwd_crypto.la lrwxrwxrwx. 1 root root 21 Aug 22 17:23 /usr/local/lib/libwd_crypto.so -> libwd_crypto.so.2.6.0 lrwxrwxrwx. 1 root root 21 Aug 22 17:23 /usr/local/lib/libwd_crypto.so.2 -> libwd_crypto.so.2.6.0 -rwxr-xr-x. 1 root root 715616 Aug 22 17:23 /usr/local/lib/libwd_crypto.so.2.6.0 -rwxr-xr-x. 1 root root 907 Aug 22 17:23 /usr/local/lib/libwd.la lrwxrwxrwx. 1 root root 14 Aug 22 17:23 /usr/local/lib/libwd.so -> libwd.so.2.6.0 lrwxrwxrwx. 1 root root 14 Aug 22 17:23 /usr/local/lib/libwd.so.2 -> libwd.so.2.6.0 -rwxr-xr-x. 1 root root 1342080 Aug 22 17:23 /usr/local/lib/libwd.so.2.6.0
- 执行以下命令安装用户态驱动。
- 编译安装KAEZstd。
- 执行以下命令安装KAEZstd。
sh build.sh zstd
- 执行以下命令查看KAEZstd是否安装成功。
ll /usr/local/kaezstd/
回显信息如下表示安装成功。drwxr-xr-x 2 root root 4096 Jun 11 22:29 bin drwxr-xr-x 2 root root 4096 Jun 11 22:29 include drwxr-xr-x 3 root root 4096 Jun 11 22:29 lib drwxr-xr-x 3 root root 4096 Jun 11 22:29 share
- 执行以下命令查看生成的文件。
ll /usr/local/kaezstd/bin/
回显信息如下。lrwxrwxrwx 1 root root 4 Jun 11 22:29 unzstd -> zstd -rwxr-xr-x 1 root root 986192 Jun 11 22:29 zstd lrwxrwxrwx 1 root root 4 Jun 11 22:29 zstdcat -> zstd -rwxr-xr-x 1 root root 3869 Jun 11 22:29 zstdgrep -rwxr-xr-x 1 root root 30 Jun 11 22:29 zstdless lrwxrwxrwx 1 root root 4 Jun 11 22:29 zstdmt -> zstd
- 执行以下命令安装KAEZstd。
- 安装内核驱动。
- 通过查看硬件设备的队列数来确定程序是否已经调用KAE来加速zstd算法,执行以下命令查看hisi_zip驱动模块对应的队列数,默认情况下队列数为256。
watch -n 0.2 cat /sys/class/uacce/hisi_zip-*/available_instances
回显信息:Every 0.2s: cat /sys/class/uacce/hisi_zip-0/available_instances/sys/class/uacce/hisi_zip... localhost.localdomain: 256 256 256 256
另开窗口执行7,执行任务时若上述回显中队列数量发生变化,表明KAE压缩加速硬件成功使能。
Every 0.2s: cat /sys/class/uacce/hisi_zip-0/available_instances/sys/class/uacce/hisi_zip... localhost.localdomain: 256 254 256 256
父主题: KAEZstd算法加速