Intel AV-ICE06加速卡测试报告
Intel RSA加速卡结合Intel其QAT_Engine测试性能的提升,其支持的异步模式对性能的提升很大。
注意QAT_Engine只支持openssl1.1.0以上
1 测试环境
| 硬件:H61 |
| 系统:2.6.32-64bits+gcc4.4.5 |
| openssl:公版openssl1.1.1a |
| 加速卡:Intel AV-ICE06(C62X系列) |
2 准备工作
2.1 下载驱动及相关手册

2.2 下载QAT引擎
git clone https://github.com/01org/QAT_Engine.git
2.3 下载OpenSSL-1.1.1a
2.4 确保已安装这些软件包
| apt-get update |
| apt-get install pciutils-dev |
| apt-get install g++ |
| apt-get install pkg-config |
| apt-get install libssl-dev |
3.1下载源码(要求gcc>=4.4.7)
3.2 安装gmp-4.3.2
| tar jxvf gmp-4.3.2.tar.bz2 |
| cd gmp-4.3.2 |
| mkdir build && cd build |
| ../configure --prefix=/usr/local/gmp-4.3.2 |
| make |
| make install |
3.3 安装mpfr-3.1.4
| tar -jzvf mpfr-3.1.4.tar.bz2 |
| cd mpfr-3.1.4 |
| mkdir build && cd build |
| ../configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-4.3.2 |
| make |
| make install |
3.4 安装mpc-1.0.3
| tar -zxvf mpc-1.0.3.tar.gz |
| mkdir build && cd build |
| ../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-3.1.4 |
| make |
| make install |
3.5 安装gcc-4.4.7
| tar -zxvf gcc-4.4.7.tar.gz |
| cd gcc-4.4.7 |
| mkdir build && cd build |
| ../configure --prefix=/usr/local/gcc-4.4.7 -enable-threads=posix -disable-checking -disable-multilib -enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3 |
| make |
| make install |
4 intel加速卡驱动编译
4.1 编译驱动
| mkdir QAT && cd QAT |
| tar -zxvf qat1.7.l.4.4.0-00023.tar.gz |
| ./configure |
| make qat-driver-install |
4.2 驱动编译过程碰到的问题
问题1:pci_pcie_cap函数重定义
| 解决方法: |
| 删除 /home/ssl/QAT/quickassist/qat/compat/qat_compat.h第107开始的pci_pcie_cap函数 |
问题2:内核不存在usleep_range函数定义
| 解决方法: |
| ../quickassist/qat/drivers/crypto/qat/qat_common/adf_clock.c:152 |
| ../quickassist/qat/drivers/crypto/qat/qat_common/adf_pf2vf_msg.c:165 |
| ../quickassist/qat/drivers/crypto/qat/qat_common/adf_admin.c:166 |
| 以上3处替换为udelay函数 |
问题3:内核不支持使用MD5进行预计算
| 没有/usr/src/linux-headers-2.6.32-5-amd64-hz1000/include/crypto/md5.h文件 |
| 解决方法: |
| 将 /home/ssl/QAT/quickassist/utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c 88行if内的部分注释掉,改成跟else一样。 |
| 或者直接将内核版本判断改成2.6.33,其余几个地方也是一样 |
4.3 拷贝整个QAT目录及驱动至产品机
- 将QAT整个目录拷贝至产品机
- 将/lib/modules/2.6.32-5-amd64-hz1000/updates/整个目录下和/lib/modules/2.6.32-5-amd64-hz1000/kernel/drivers/下的qat_api.ko和usdm_drv.ko拷贝至产品机对应目录下
4.4 intel_qat依赖uio.ko,需要从开发机中拷过去
驱动位于/lib/modules/2.6.32-5-amd64-hz1000/kernel/drivers/uio
4.5 产品机上操作,进行剩余的安装,启动加速服务
| cd QAT |
| make adf-ctl-install |
| make qat-service-install |
4.6 如果纯手动操作,在编译完成之后需要
- 将动态库拷到/lib下
- 将adf_ctl拷到$ICP_ROOT/build和/usr/sbin
- 将配置文件拷贝/etc下
- 将firmware文件拷到/lib/firmware
- 将模块拷到内核源目录下,供qat_service加载
- 启动qat_service,加载合适的模块,并且运行adf_ctl打开设备
- 将qat_service加入启动脚本中
5 加速服务控制命令
| service qat_service start |
| service qat_service stop |
| service qat_service shutdown |
| |
| 或者 |
| /etc/init.d/qat_service start |
| /etc/init.d/qat_service stop |
| /etc/init.d/qat_service shutdown |
6 安装sample应用(本部分不是必须)
在QAT目录下, make samples-install
6系列内核kernel_write函数是静态的,sample驱动中用到会找不到。直接注释掉即可,内核态测试才需要用到
| cp /home/ssl/QAT/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary /lib/firmware |
| cp /home/ssl/QAT/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary32 /lib/firmware |
| cp /home/ssl/QAT/quickassist/lookaside/access_layer/src/sample_code/performance/compression/canterbury /lib/firmware |
| cp /home/ssl/QAT/build/cpa_sample_code /usr/local/bin/cpa_sample_code |
| cp /home/ssl/QAT/build/cpa_sample_code.ko /usr/local/bin/cpa_sample_code.ko |
| 在用户态,启动cpa_sample_code之前,确保LD_LIBRARY_PATH设置了libqat_s.so所在的路径 |
| 在执行sample代码前,必须已加载驱动且软件已经启动。可以用一下命令确认 |
| lsmod | grep "qa" |
| service qat_service status |
| |
| 用户态下,执行sample代码:./cpa_sample_code |
| 内核态下,执行sample代码: insmod ./cpa_sample_code.ko |
7 编译OpenSSL-1.1.1a
| ./config --prefix=/usr/local/ssl -Wl,-rpath,\${LIBRPATH} |
| make depend (if recommended by the OpenSSL\* build system) |
| make |
| make install |
| export OPENSSL_ENGINES=/usr/local/ssl/lib/engines-1.1 |
8 QAT引擎编译
8.1 编译命令
要带Upstream QAT driver并且使用USDM组件
| cd /QAT_Engine |
| ./autogen.sh |
| ./configure \ |
| --with-qat_dir=/home/ssl/QAT \ |
| --with-openssl_dir=/home/ssl/openssl-OpenSSL_1_1_1a \ |
| --with-openssl_install_dir=/usr/local/ssl \ |
| --enable-upstream_driver \ |
| --enable-usdm |
| make |
| make install |
8.2 碰到的问题
错误1:autoconf版本不够
| 解决:autoconf要求2.68以上,修改/QAT_Engine/ .tools/configure.ac第4行 |
错误2:configdata.pm not present in the @INC path
| 解决:export PERL5LIB=$PERL5LIB:/home/ssl/openssl-OpenSSL_1_1_1a |
错误3:gcc未知的选项-fstack-protector-strong
| 解决:gcc4.9开始才支持此选项,可以改成-fstack-protector-all或者-fstack-protector |
8.3 引擎测试
根据实际情况选择/QAT_Engine/qat/config/c6xx下配置拷贝到/etc
重启加速驱动
| ./openssl engine -t -c -vvvv qat |
9 openssl speed测试命令
| |
| ./openssl speed -elapsed rsa2048 |
| |
| ./openssl speed -engine qat -elapsed rsa2048 |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 36 rsa2048 |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 72 rsa2048 |
| |
| ./openssl speed -elapsed ecdsap256 |
| |
| ./openssl speed -engine qat -elapsed ecdsap256 |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 36 ecdsap256 |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 72 ecdsap256 |
| |
| ./openssl speed -elapsed ecdhp256 |
| |
| ./openssl speed -engine qat -elapsed ecdhp256 |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 36 ecdpp256 |
| |
| |
| ./openssl speed -engine qat -elapsed -async_jobs 72 ecdpp256 |
10 测试结果

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具