Ⅰ. Issue Description
使用qat加速时,不开启异步模式,Tengine的CPU使用率跟不用qat一样,性能没有提升。我的理解是只要使用qat硬件加速,不管同步异步模式,握手的RSA计算都应该有硬件加速卡计算,不会占用CPU的资源,CPU的负载应该比不使用QAT硬件加速时低呀
Ⅱ. Describe what happened
1、测试环境
1)服务端环境,Tengine作为作为LB,挂载三个后端示例
OS: CentOS7.6(3.10.0-957.21.3.el7.x86_64)
Tengine环境
./sbin/nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.1.1c 28 May 2019
TLS SNI support enabled
configure arguments: --prefix=/mypath/srv/tengine-2.3.2 --with-http_ssl_module --with-openssl-async --with-cc-opt='-DNGX_SECURE_MEM -I/mypath/srv/openssl/include -Wno-error=deprecated-declarations' --with-ld-opt='-Wl,-rpath=/mypath/srv/openssl/lib -L/mypath/srv/openssl/lib'
开启10个进程:worker_processes 10;
OpenSSL-1.1.1c
QAT环境
qat1.7.l.4.7.0-00006
https://github.com/intel/QAT_Engine.git
编译时安装是成功的
service qat_service status
Checking status of all devices.
There is 1 QAT acceleration device(s) in the system:
qat_dev0 - type: dh895xcc, inst_id: 0, node_id: 0, bsf: 0000:13:00.0, #accel: 6 #engines: 12 state: up
2)测试端
CentOS6.6
测试脚本
for((i=0;i<25;i++))
do
ab -n 10000 -c 50 https://mydomain/ > logs/$i.txt&
done
2、测试三种情况
1)没有使用qat硬件加速卡
service qat_service stop
将配置中关闭ssl_engine,关闭ssl_async
#ssl_engine qat;
#ssl_async on;
2)使用qat,但是不开启异步模式
service qat_service start
ssl_engine qat;
#ssl_async on;
3)使用qat,开启异步模式
service qat_service start
ssl_engine qat;
ssl_async on;
从测试数据来看,第一种场景(不使用qat)和第二种场景(使用qat,但是不开启异步模式),CPU的使用率一样呀,我的理解是只要使用qat卡,不管同步异步模式,握手的RSA计算都应该有硬件加速卡计算,不会占用CPU的资源,CPU的负载应该比不使用QAT硬件加速时低呀,但是从测试的数据来看不是这样。
第三种情况(开启异步模式),CPU使用率可以节约50%,这个数据可以说的过去。
请问Tengine的同学,在使用qat时是否对比测试过这三种场景,结果是怎样的?
8条答案
按热度按时间rdlzhqv91#
不使用qat的top
sigwle7e2#
使用qat,但是不适用异步
ijxebb2r3#
qat,异步模式top
iszxjhcz4#
@lizj3624 同步模式下Tengine需要去polling QAT里面的处理数据,所以在QAT处理数据的这段时间,相当于没有把CPU让出去做其它的事情。
u3r8eeie5#
@lizj3624 你好,请问部署qat卡和tengine是参照tengine官网部署的吗?官网里面qat 驱动下载链接打不开。请给我个驱动吧。
b0zn9rqh6#
@lizj3624 你好,请问部署qat卡和tengine是参照tengine官网部署的吗?官网里面qat 驱动下载链接打不开。请给我个驱动吧。
最新驱动在这里: https://downloadcenter.intel.com/downloads/eula/30178/Intel-QuickAssist-Technology-Driver-for-Linux-HW-Version-1-7?httpDown=https%3A%2F%2Fdownloadmirror.intel.com%2F30178%2Feng%2FQAT1.7.L.4.14.0-00031.tar.g
你可以从这里下载:最新驱动: https://01.org/intel-quickassist-technology
wnrlj8wa7#
非常感谢!我们安装好tengine了。主要是因为openssl.cnf 主需要配置tengine官网写的配置参数,其他参数都要删除掉。
另外,我们用wrk测试发现,tengine 48子进程在开启ssl 异步模式下配合qat卡,只能压到每个worker 进程占CPU的50%左右。看perf 是qat engine 阻塞在poll 函数里了。怀疑是qat卡的瓶颈了。也不知道怎么看qat卡利用率。不知道您有没有好的建议。
bfrts1fy8#
inter 开源一个支持qat的nginx: https://github.com/intel/asynch_mode_nginx,你可以参考一下,这个是可以适配最新qat驱动和engine,Tengine支持qat的版本好像不是最新的