DeepStream单进程8流与多进程单流的GPU利用率瓶颈排查
DeepStream 7.1 PyServiceMaker单进程多流GPU利用率偏低问题排查
环境信息
- 操作系统:Ubuntu 22.04 LTS
- DeepStream SDK版本:7.1
- 核心技术栈:FastAPI、PyServiceMaker(pyservicemaker)API
- 部署方案:单进程8流流水线 / 8进程单流流水线(Nginx负载均衡)
问题描述
构建实时视频分析服务时出现GPU利用率瓶颈,两种部署方式表现差异显著:
- 单进程运行1条8流流水线:GPU利用率仅维持在约52%,无法进一步提升,吞吐量较低
- 8个进程各运行1条单流流水线(Nginx负载均衡):GPU可轻松跑满100%,吞吐量远高于单进程方案
按理论预期,单进程基于C++核心的流水线应具备更低开销、更高批处理效率,但实际表现完全相反,需定位根因。
待排查方向
- Python G锁影响:自定义Probe/Metadata Operator读取
batch_meta时,是否因GIL锁导致流水线阻塞,进而造成GPU喂料不足? - nvmultiurisrcbin配置瓶颈:使用
nvmultiurisrcbin或其REST API动态添加流时,是否存在同步机制或队列阻塞问题? - PyServiceMaker线程限制:PyServiceMaker是否存在特定的线程数量限制,导致无法充分利用GPU资源?
附相关代码与配置
自定义Probe/Metadata Operator核心代码
def custom_metadata_probe(pad, info, u_data): batch_meta = info.get_batch_meta() # 元数据处理逻辑 for frame_meta in batch_meta.frame_meta_list: # 业务处理代码 pass return Gst.PadProbeReturn.OK
nvmultiurisrcbin REST API配置示例
{ "uri_list": [ "rtsp://stream1.example.com", "rtsp://stream2.example.com", "rtsp://stream3.example.com", "rtsp://stream4.example.com", "rtsp://stream5.example.com", "rtsp://stream6.example.com", "rtsp://stream7.example.com", "rtsp://stream8.example.com" ], "batch_size": 8, "sync": false }
PyServiceMaker服务启动代码
from pyservicemaker import ServiceMaker service = ServiceMaker() service.set_pipeline_config("pipeline_config.txt") service.start()
内容的提问来源于stack exchange,提问作者Pychong
相关产品推荐
相关产品推荐

