zoukankan      html  css  js  c++  java
  • Intel_AV-ICE06加速卡+QAT_Engine测试

    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 编译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/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 #会打出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 测试结果

  • 相关阅读:
    ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记
    ASP.NET Core分布式项目实战(客户端集成IdentityServer)--学习笔记
    ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记
    ASP.NET Core分布式项目实战(课程介绍,MVP,瀑布与敏捷)--学习笔记
    .NET Core开发实战(第35课:MediatR:让领域事件处理更加优雅)--学习笔记
    .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(下)
    .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(上)
    .NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(下)
    .NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(上)
    .NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记
  • 原文地址:https://www.cnblogs.com/logchen/p/10403138.html
Copyright © 2011-2022 走看看