一句话:提出由网络接口驱动的 RPC 负载均衡设计,以近最优尾延迟调度多核服务器上的微秒级 RPC。
现代在线服务对响应尾延迟要求严苛,且细粒度软件分层使单次用户请求扇出大量微秒级 RPC,加剧了对更快跨服务器通信与高效负载均衡的需求。硬件终止的用户级协议(如 InfiniBand/RDMA)与集成网络接口(NI)的出现,为 NI 驱动的 RPC 分派提供了新机会。本文提出 RPCValet,一种面向此类架构的 RPC 负载均衡设计,其分派决策模拟理论最优的单队列系统,同时避免单队列实现通常的同步开销。实验表明,相较于当前具备 RPC 负载分发硬件支持的系统,RPCValet 在严格尾延迟目标下将吞吐提升至多 1.4 倍,并将 μs 级 RPC 在饱和前的尾延迟降低至多 4 倍,且性能距理论最优单队列系统 15% 以内。
Modern online services come with stringent quality requirements in terms of response time tail latency. Because of their decomposition into fine-grained communicating software layers, a single user request fans out into a plethora of short, μs-scale RPCs, aggravating the need for faster inter-server communication. In reaction to that need, we are witnessing a technological transition characterized by the emergence of hardware-terminated user-level protocols (e.g., InfiniBand/RDMA) and new architectures with fully integrated Network Interfaces (NIs). Such architectures offer a unique opportunity for a new NI-driven approach to balancing RPCs among the cores of manycore server CPUs, yielding major tail latency improvements for μs-scale RPCs. We introduce RPCValet, an NI-driven RPC load-balancing design for architectures with hardware-terminated protocols and integrated NIs, that delivers near-optimal tail latency. RPCValet's RPC dispatch decisions emulate the theoretically optimal single-queue system, without incurring synchronization overheads currently associated with single-queue implementations. Our design improves throughput under tight tail latency goals by up to 1.4x, and reduces tail latency before saturation by up to 4x for RPCs with μs-scale service times, as compared to current systems with hardware support for RPC load distribution. RPCValet performs within 15% of the theoretically optimal single-queue system.