brpc icon indicating copy to clipboard operation
brpc copied to clipboard

brpc调用openmp时cpu消耗不受控制

Open yushcs opened this issue 5 years ago • 4 comments

在brpc服务中调用openmp进行矩阵运算,在设置了环境变量OMP_NUM_THREADS和OMP_DYNAMIC="FALSE"后,cpu消耗依旧不受控制。 例:OMP_NUM_THREADS=4 OMP_DYNAMIC="FALSE";单个client请求的情况下,cpu消耗达到在600%-1000%之间波动;多个client并发的情况下,cpu消耗更加不可控。 已验证使用pthread对上述openmp的计算模块进行多线程调用时cpu消耗正常;已验证在brpc服务中去除openmp的相关模块后正常。 请问上述情况和bthread有没有关系?或者有什么排查方向吗?非常感谢!

yushcs avatar Nov 25 '20 10:11 yushcs

可能是有锁block bthread worker。你说的cpu消耗的值具体是哪里看的?top看的,还是bvar里面的cpu_usage? work_usage bvar是多少?

cdjingit avatar Nov 25 '20 11:11 cdjingit

cpu消耗是在bvar的process_cpu_usage里看的,bthread_work_usage是0.95左右(单client请求的情况下)

yushcs avatar Nov 25 '20 11:11 yushcs

这个有什么解法吗

houjincheng1992 avatar Sep 07 '21 06:09 houjincheng1992

我也遇到类似的问题,通过调参数,将OMP_NUM_THREADS设置为1后,性能反而更好

ryankeke avatar Oct 30 '23 08:10 ryankeke