buffer model & instance

QAT中buffer的数据结构有两种:Flat Buffers和 Scatter Gather Lists。

1. Flat Buffers

2. Scatter Gather Lists

  1. Accelerator rings

QAT Accelerator有一系列rings来存放数据。

16个rings组成一个ring bank。

图中一个package(即一个设备)包含16个ring bank和2个accelerator,每个accelerator又包含多个engine。

Engine是专门处理数据的加速单元,分为压缩解压和加解密两类。

每个处理器有多个物理核或逻辑核。

Ring按作用可分为两类:request ring和response ring。

处理器和QAT设备之间的通信可简化为以下四个步骤:

1)    处理器发送一个request到request ring中

2)    Engine设备从request ring中读出request

3)    Engine处理数据完毕后,将response写入response ring中

4)    处理器从response ring中取出response

  1. Instance

Service instance可以看做是QAT engine和处理器之间通信的通道。如图所示:

一个Processor有n个logical core。 每个core/thread可对应n个instance。每个ring bank包括16个rings。每个DC instance 需要2个ring,每个CY instance需要6个ring。多个instance可共享同一个engine。

cpaInstanceInfo2存放instance的结构信息,包括操作类型,亲和性,ID等信息,可在相应configuration file中查看。

  1. Load balancing

由于存在可能多个core和多个engine,实际上有必要对instance分配进行负载平衡。几个常见的例子如下:

  1. Instance数目有限

以8950这一产品为例,instance的最大数目为64个(MAX_INSTANCE<=64)。Engine的数目为48个。

  1. 理解

上几张图解释了A service instance can be thought of as a channel between accelerators and cores/threads running on the processor, which uses the rings for communication.这句话。

对rings的分配管理,cpaInstanceInfo的配置,负载均衡应该都是对用户透明的。使用时只需调用相关API,设置相关参数即可。

猜你喜欢

转载自www.cnblogs.com/ustcrliu/p/8980722.html
今日推荐