Intel RSA加速卡结合Intel其QAT_Engine测试性能的提高,其支持的异步模式对性能的提高很大。linux
注意QAT_Engine只支持openssl1.1.0以上c++
硬件:H61 系统:2.6.32-64bits+gcc4.4.5 openssl:公版openssl1.1.1a 加速卡:Intel AV-ICE06(C62X系列)
git clone https://github.com/01org/QAT_Engine.git
git
apt-get update apt-get install pciutils-dev apt-get install g++ apt-get install pkg-config apt-get install libssl-dev
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
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
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
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
mkdir QAT && cd QAT tar -zxvf qat1.7.l.4.4.0-00023.tar.gz ./configure make qat-driver-install
解决方法: 删除 /home/ssl/QAT/quickassist/qat/compat/qat_compat.h第107开始的pci_pcie_cap函数
解决方法: ../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函数
没有/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,其他几个地方也是同样
驱动位于/lib/modules/2.6.32-5-amd64-hz1000/kernel/drivers/uio
github
cd QAT make adf-ctl-install make qat-service-install
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 //中止软件并移除驱动
在QAT目录下, make samples-install
shell
6系列内核kernel_write函数是静态的,sample驱动中用到会找不到。直接注释掉便可,内核态测试才须要用到api
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
./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
要带Upstream QAT driver而且使用USDM组件bash
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
解决:autoconf要求2.68以上,修改/QAT_Engine/ .tools/configure.ac第4行
解决:export PERL5LIB=$PERL5LIB:/home/ssl/openssl-OpenSSL_1_1_1a
解决:gcc4.9开始才支持此选项,能够改为-fstack-protector-all或者-fstack-protector
根据实际状况选择/QAT_Engine/qat/config/c6xx下配置拷贝到/etc
重启加速驱动异步
./openssl engine -t -c -vvvv qat #会打出qat引擎的相关信息
# Software 纯软 ./openssl speed -elapsed rsa2048 # Synchronous 同步 ./openssl speed -engine qat -elapsed rsa2048 # Asynchronous1 异步 ./openssl speed -engine qat -elapsed -async_jobs 36 rsa2048 # Asynchronous2 异步 ./openssl speed -engine qat -elapsed -async_jobs 72 rsa2048
# Software 纯软 ./openssl speed -elapsed ecdsap256 # Synchronous 同步 ./openssl speed -engine qat -elapsed ecdsap256 # Asynchronous1 异步1 ./openssl speed -engine qat -elapsed -async_jobs 36 ecdsap256 # Asynchronous2 异步2 ./openssl speed -engine qat -elapsed -async_jobs 72 ecdsap256
# Software 纯软 ./openssl speed -elapsed ecdhp256 # Synchronous 同步 ./openssl speed -engine qat -elapsed ecdhp256 # Asynchronous1 异步1 ./openssl speed -engine qat -elapsed -async_jobs 36 ecdpp256 # Asynchronous2 异步2 ./openssl speed -engine qat -elapsed -async_jobs 72 ecdpp256