背景:
三类RPC:
- Performance-critical (PC) RPCs have tail latency SLOs. Sometimes they are associated with real-time interactive applications or carry key control traffic.
- Non-critical (NC) RPCs: generally care about sustained rate and their latency SLOs are less stringent on the tail relative to PC RPCs.
- Best-effort (BE) RPCs have the lowest priority, such as background backup traffic which sees no imminent disadvantage to elevated latency as long as it eventually completes. BE RPCs have no SLOs and are akin to a scavenger class
RPC network-latency (RNL) : the time between the first RPC packet arriving at the transport layer (such as TCP) and the time when the last packet of the RPC is acknowledged at the transport.
Network overload: overloads can occur anywhere in the network along the path that an RPC takes between the client and the server.
缓解网络过载的现有方案:
- 拥塞控制:只关注通信链路的容量,提供不了RPC的延迟保证。
- 基于优先级:根据规模将较小的流设为优先,但大小与优先级并不对齐;人为对应用进行分级来最小化完成时间,这样导致应用程序将所有RPC设为最高级。
- 带宽共享保证:没有考虑应用程序优先级和提供RPC延迟保证。
Aequitas:
目标:为RPC优先级磊提供具有性能要求的RNL 服务等级目标(PC和NC)
面临挑战:
- 为各种应用程序表示SLO。RPC的延迟降级可能是由计算,存储或网络的过载导致的。梳理出网络可以负责的SLO是关键。
- 结构。鉴于网络中的任何地方都可以发生过载,因此解决方案需要处理RPC遍历路径沿任何地方出现的动态过载。
- 规模。在一个集群中,可能有成千上万的主机,成千上万的租户和数百个应用程序,所有这些都需要在微秒尺度上进行RPC性能。
key idea: 通过比较RNL SLO目标和实际测量值,该算法可以调整RPC运行的QoS的每个目标宿主的流量。
核心设计:
- 将网络QoS与RPC优先级相结合:在RPC粒度上,三个优先级别在三个QoS类中进行了三个QoS类别,并配以WFQ调度算法,PC到QoSh,NC到QoSm,BE到QoSl。算法只为QoSh,QoSm提供SLO。
- 通过QoS降级的分布式准入控制以提供RNL SLOs:通过通知准入概率去为给定RPC设置请求的QoS。这控制了跨QoS级别接收的RPC的一部分,以满足RNL SLOS。与传统的准入控制机制不同,这些机制降低或限制流量,Aequitas降低了未允许的RPC,并在最低的QoS级别上发出。这个算法通过AIMD进行控制准入概率。