下载
中文
注册

合理设置队列深度,减少硬件资源浪费,提升性能

背景说明

Atlas 推理系列产品上,可使用媒体数据处理V2版本接口,配置VPC队列深度,队列深度范围[10,350]之间。用户业务下发任务时,若VPC队列满后,会反压阻塞任务下发,影响性能。

基本原理

适当加大VPC队列深度,可以缓解用户业务下发任务与VPC内部任务处理相互之间性能波动的影响。

  • 如果用户短时间内下发任务多于VPC通道处理速度,则多出来的任务会缓存在队列中,不会阻塞用户继续下发任务;
  • 如果短时间内用户下发任务较少,则VPC可以处理队列中缓存的任务,不会造成空闲,导致硬件资源浪费。

用户可基于业务下发任务的速度与VPC单通道处理的性能适当调整队列任务深度:

  • 用户业务创建一个通道,起多个线程往同一通道下发任务,且下发任务数超过上面单通道参考性能,则建议用户将队列深度设大;
  • 用户业务创建一个通道,只有一个线程往该通道下发任务,且为下发一次任务,获取一次结果,串行执行。该情况通道任务不会堆积,不必设大,保持默认即可。

VPC单通道处理的性能,请参见性能指标说明

使用说明

调用hi_mpi_vpc_create_chn接口或hi_mpi_vpc_sys_create_chn接口创建VPC通道时,通过hi_vpc_chn_attr结构体内的attr参数设置队列深度。

关于VPC队列深度设置示例代码,参见sample_vpc.cpp中queue_len参数。