Intel_AV-ICE06加速卡+QAT_Engine測試

Intel AV-ICE06加速卡測試報告

Intel RSA加速卡結合Intel其QAT_Engine測試性能的提高,其支持的異步模式對性能的提高很大。linux

注意QAT_Engine只支持openssl1.1.0以上c++

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.gitgit

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 編譯gcc4.4.7(此步能夠跳過,直接修改configure中gcc版本依賴爲>=4.4.5)

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目錄及驅動至產品機

  1. 將QAT整個目錄拷貝至產品機
  2. 將/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/uiogithub

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-installshell

  • 編譯問題

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

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組件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

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 #會打出qat引擎的相關信息

9 openssl speed測試命令

  • RSA2048
# 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
  • ECDSA-P256
# 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
  • ECDH-P256
# 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

10 測試結果

相關文章
相關標籤/搜索