Netflix Blog-容器的预测性CPU隔离

    这篇文章 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

发表回复