zlib硬件加速调优
- 目的
优化zlib压缩,最大化cpu处理OSD进程的能力,发挥硬件最大性能。
- 方法
zlib压缩过程交由硬件加速引擎处理。
环境准备

安装加速引擎前需申请安装license。
申请指导:
https://support.huawei.com/enterprise/zh/doc/EDOC1100068121/a313550c
安装指导:
https://support.huawei.com/enterprise/zh/doc/EDOC1100048792/ba20dd15
下载加速引擎安装包与开发者指南。
加速引擎安装

开发者指南为加速引擎所有模块的安装指导流程与使用说明,依据开发者指南选择合适的安装方式进行安装。
- 按照开发者指南安装加速引擎。
- 替换zlib软算动态库。
1 2 3 4 5
cd /usr/local/zlib mv /lib64/libz.so.1.2.7 /lib64/libz.so.1.2.7.softbak cp libz.so.1.2.7 /lib64/ rm -f /lib64/libz.so.1 ln -s /lib64/libz.so.1.2.7 /lib64/libz.so.1
命令cd /usr/local/zlib中“/usr/local/zlib”指zlib安装路径,请根据实际情况进行替换。

若替换动态库之前Ceph集群已经在运行,需要在完成动态库替换后重启OSD进程使其生效,在所有存储节点上执行:
1 | systemctl restart ceph-osd.target
|
修改加速器默认队列数

硬件加速器默认队列数为256,为了保证加速器完全发挥性能,可修改队列数为512或1024。
- 卸载hisi_zip。
1
rmmod hisi_zip
- 修改默认加速器队列参数“pf_q_num=512”。
1
vi /etc/modprobe.d/hisi_zip.conf
1
options hisi_zip uacce_mode=2 pf_q_num=512
- 加载hisi_zip。
1
modprobe hisi_zip
- 检查硬件加速器队列。
1
cat /sys/class/uacce/hisi_zip-*/attrs/available_instances
显示如下则代表修改成功:
- 检查动态库链接,包含libwd.so.1字样代表成功。
1
ldd /lib64/libz.so.1
Ceph适配加速器

当前,Ceph主线版本已支持通过配置文件对zlib压缩模式进行配置,已发布的Ceph release版本(统计至v15.2.3),采用的zlib压缩是不带数据头尾的方式,而当前硬件加速库版本仅支持带数据头尾的方式。因此,需要修改Ceph源码以适配Kunpeng硬件加速库。修改方式参考已合入主线的最新补丁:
https://github.com/ceph/ceph/pull/34852
下文以Ceph 14.2.8为例,介绍Ceph适配zlib压缩引擎的方法。
- 获取源码。
源码下载链接:https://download.ceph.com/tarballs/
下载完成后将源码包放入服务器“/home”目录下。
- 获取补丁,放入“/home”目录下。
https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/storage/Patch/
- 进入“/home”目录,解压源码包并进入解压后的目录。
1
cd /home && tar -zxvf ceph-14.2.8.tar.gz && cd ceph-14.2.8/
- 在源码目录下,应用补丁。
1
patch -p1 < ../ceph-14.2.8-zlib-compress.patch
- 修改完源码后需要编译Ceph,编译步骤请参考《Ceph 14.2.1 移植指南(CentOS 7.6)》。
- 完成Ceph的软件安装。
- 修改ceph.conf,配置zlib压缩模式。
1
vi /etc/ceph/ceph.conf
compressor_zlib_winsize=15
- 修改systemd权限。Ceph中,RGW进程服务由systemd管理,为使其具有硬件加速设备的访问权限, 需在每台RGW部署节点修改配置如下:
- 打开配置文件。
1
vi /usr/lib/systemd/system/ceph-radosgw@.service
并修改“PrivateDevices=yes”为“PrivateDevices=no”
- 使修改生效。
1
systemctl daemon-reload
- 打开配置文件。
- 重启Ceph集群,确认配置生效。
1
ceph daemon osd.0 config show|grep compressor_zlib_winsize
