apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.46k stars 3.96k forks source link

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

Open yushcs opened 3 years ago

yushcs commented 3 years ago

在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有没有关系?或者有什么排查方向吗?非常感谢!

cdjingit commented 3 years ago

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

yushcs commented 3 years ago

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

houjincheng1992 commented 3 years ago

这个有什么解法吗

ryankeke commented 11 months ago

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