这篇文章 Predictive CPU isolation of containers at Netflix 是出自 Netflix Technology Blog
现存问题:
应用在云中共享空间内性能隔离。
解决方案:
操作系统级别的方案: Linux CFS(Completely Fair Scheduler), 公平的方式将正在运行的进程分配给CPU时间片。
方案问题:
应用规模: millions of containers on thousands of machines 。 千台以上的机器上运行百万级别的容器。
组合优化:
数学中 组合优化 combinatorial optimization方法解决, 给定一组K个容器,每个容器在具有d个线程的实例上请求特定数量的CPU,目标是找到大小为(d,K)的二进制分配矩阵M, 使得每个容器获得它请求的CPU的数量。
可以使用的一些策略如:
- 避免将容器分散到多个NUMA socket;
- 尽量减少超线程
- 平衡L3 的缓存压力
- 减少容器的防止决策的操作
实现:
- 通过Titus是Netflix的容器平台, 管理容器
- 使用Linux cgroup实现CFS为每个容器操作的策略。
- 用户空间通过 titus-isolate Titus子系统定义三个优化时间:
- add:新增容器;
- remove:移除完成的容器,
- rebalance:根据CPU使用率重新评估放置策略;
- 每次发生时间后, 触发远程查询优化动作, 通过查询GBRT模型, 通过上下文功能 与容器关联的元数据:谁启动它,图像,内存和网络配置,应用程序名称等,以及CPU Accounting Controller(统计cgroup cpu使用情况)来预测未来10分钟内 每个CPU 95%使用率。
- 使用用cvxpy作为前端,将预测送入MIP(混合整数程序)求解。
- 服务将放置策略返回主机, 主机通过修改容器的cpusets来执行它。
后续:
- 支持 CPU超额预定(CPU oversubscription)
- 利用内核PMC事件来更直接地优化最小的缓存噪声
Be First to Comment