Reservation
RSVP
网络领域中比较典型的是资源预留协议(Resource Reservation Protocol, RSVP)。RSVP 只在单方向上进行资源请求,因此,尽管相同的应用程序,同时可能既担当发送者也担当接受者,但 RSVP 对发送者与接受者在逻辑上是有区别的。 RSVP 运行在 IPV4 或 IPV6 上层,占据协议栈中传输协议的空间。 RSVP 不传输应用数据,但支持因特网控制协议,如 ICMP、IGMP 或者路由选择协议。正如路由选择和管理类协议的实施一样, RSVP 的运行也是在后台执行,而并非在数据转发路径上。RSVP是由接收者提出资源预留申请的,这种申请是单向的,也就是说为从主机a到主机b的数据流预留的资源,对于从主机b到主机a的数据流是不起作用的。
一个结点上的RSVP进程(RSVP Process)都会将 请求资源预留的消息传递给接纳控制部件(Admission Control)和策略控制部件(Policy Control)。admission control是回答是否有足够的可利用资源满足该请求,policy control是回答这个用户是否允许使用该资源。
目前RSVP支持两类服务:GS(Guaranteed Service)和CS(Controlled-load Service)。GS确保数据报在确定的时间内到达接收端,并且当网络负载过重时,不被从队列中溢出。它要求应用指定通信量参数(如带宽、端端延迟等),常用于需要严格保证无丢失、准确达到的实时传输应用上。CS会尽最大可能地保证服务,类似于best effort。
ZFS
在ZFS中给文件系统分配存储空间时,存在两个参数:reservation和quota。前者分配空间之后,用户即使不存数据,也实际占用了reservation大小的空间,后者quota类似于limit,用户的实际占用空间不能超过quota;如果两个参数都设置的话,用户占用空间的区间为[reservation, quota]。
K8s的QoS策略
k8s中包括三种QoS策略,可以针对CPU和内存设置资源参数:
• Guaranteed
• Burstable
• BestEffort
对于 QoS 类为 Guaranteed 的 Pod:
• Pod 中的每个容器,包含初始化容器,必须指定内存请求和内存限制,并且两者要相等。
• Pod 中的每个容器,包含初始化容器,必须指定 CPU 请求和 CPU 限制,并且两者要相等。
如果满足下面条件,将会指定 Pod 的 QoS 类为 Burstable:
• Pod 不符合 Guaranteed QoS 类的标准。
• Pod 中至少一个容器具有内存或 CPU 请求。
对于 QoS 类为 BestEffort 的 Pod,Pod 中的容器必须没有设置内存和 CPU 限制或请求。
k8s底层依赖cgroup来实现,通过将不同策略的参数映射成满足需求的cgroup配置。
看一下怎么映射。
1.隔离模型
2.准入
3.公平性
Admission control
论文[1][2]中在讲reservation算法时,都提到了必须有admission control,尤其是论文[2]有大篇篇幅都在讲admission control。admission control无非是监控当前已使用的reservation,以及计算总的reservation。
Weight
将资源按照权重比例进行分配,在网络领域有WFQ[3]、SFQ[4]算法、存储领域有SFQ[5]、DSFQ[6]等,他们的主要思想和dmclock类似,是采用时间标签,按照时间标签的大小来调度。
Limit
limit参数很好理解,也是目前工业界使用最广泛的QoS参数,该参数的目标就是为了限制用户使用资源不能达到预设的值。典型的算法包括cgroup的throttler的实现算法、token-bucket算法,以及分布式的token-bucket算法[7]等。
[1] STOICA I, ABDEL-WAHAB H, JEFFAY K. On the Duality between Resource Reservation and Proportional Share Resource Allocation[J]. Multimedia Computing and Networking 1997, 1997, 3020(96): 207–214. DOI:10.1117/12.264293.
[2] MERCER C W. Operating system support for multimedia applications[J]. Proceedings of the 2nd ACM International Conference on Multimedia, MULTIMEDIA 1994, 1994: 492–493. DOI:10.1145/192593.197424.
[3]DEMERS, A., KESHAV, S., AND SHENKER, S. Analysis and simulation of a fair queuing algorithm. Journal ofInternetworking Research and Experience 1, 1 (September 1990), 3–26.
[4] GOYAL P, VIN H M, CHENG H. Start-time fair queueing: A scheduling algorithm for integrated services packet switching networks[J]. SIGCOMM, 1996, 5(5): 690–704. DOI:10.1109/90.649569.
[5]JIN, W., CHASE, J. S., AND KAUR, J. Interposed proportional sharing for a storage service utility. In ACM SIGMETRICS (June 2004), pp. 37–48.
[6]WANG, Y., AND MERCHANT, A. Proportional-share scheduling for distributed storage systems. In Usenix FAST’07.
[7] RAGHAVAN B, VISHWANATH K, RAMABHADRAN S等. Cloud control with distributed rate limiting[J]. Computer Communication Review, 2007, 37(4): 337–348. DOI:10.1145/1282427.1282419.