EventEngine: 可配置的本地队列唤醒,以降低对单元 RPC 的 CPU 开销
作者: kpavlov00创建于 2026年9月16日更新于 2026年9月16日
标签kind/enhancementlang/corepriority/P2untriaged
你的功能请求是否与问题有关?请描述。 我们的流量主要由单次 RPC 组成。在代表这种使用情况的受控基准测试中,EventEngine 线程池在本地排队后不加条件的工作通知会产生大量 CPU 开销。WorkStealingThreadPoolImpl::Run() 在可能的情况下将工作添加到当前工作的本地队列中,但仍然在排队路径之后调用work_signal_.Signal(): https://GitHub.com/grpc/grpc/blob/44ad876be99416b3d1b4842f6b88d1ae8188f80e/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc#L247-L257 注释解释说,这在具有小有效载荷的 32 核流式基准测试中提高了性能。我们理解这种权衡的动机。但是,对于我们主要是单次流量和较小的服务器 CPU 预算,额外唤醒和工作在线程之间的移动都很昂贵。 **版本范围:**下面的测量使用基于 gRPC 1.60.2 的下游构建,包括下游补丁,嵌入在基于 C++ 协程的服务器中。我们验证了无条件本地排队通知在上述提交中的 master 中仍然存在,但我们尚未对该 master 提交进行基准测试。其轮询周期实现也发生了变化,因此测量到的改进不应被视为当前 master 的证明结果。
内容来源: grpc/grpc