既要稳也要省,容器资源该怎么分配?( 三 )

  • quota 申请模块:规范 quota 申请流程,明确 quota 申请规则 。
  • 新分级体系三大重点资源保障新分级体系立足于核心问题,在单机层面和集群层面都对容器申请的资源进行相应保障 。
    单机资源保障:CPU新分级体系资源保障的其中一个重点为:保障容器的 CPU 资源任何时刻都能按超卖比所规定的有效交付 。
    在前文中,我们提到新体系容器的超卖规则为:S级不超卖,A级2倍超卖,B级4倍超卖 。那对于不同等级的容器,可轻松得知其所需的物理 CPU 个数 。新分级体系所需要保证的就是一台物理机上所有容器经过超卖比计算后得到的物理 CPU 个数必须小于物理机上的 CPU 个数 。
    既要稳也要省,容器资源该怎么分配?

    文章插图
    图片
    上述的示例中,对于一个40核的物理机 , 可用的 CPU 数为: 40*90%=36核 (90%为计算各种 agent 和调度损耗之后的有效核数) 。容器总共申请的核数为56核 , 经过超卖比计算后得到的所需物理核为36,刚好满足要求 。
    通过明确超卖比,根据超卖比准备对应物理 CPU 资源的方式,在高负载期间,如果所有的容器都满载运行,则物理机上的 CPU 资源将会按照超卖比承诺的比例进行分配 。在低负载时刻,算力足够时,由于机器整体空闲,容器之间几乎不发生争抢,此时容器可以正常使用 CPU 。
    单机资源保障:内存在物理机层面,内存是所有容器之间共享的资源,传统内核没有对容器进行优先级的划分,所有容器的内存使用对于内核而言都是一视同仁 。
    内存对容器性能的影响主要体现在内存分配和内存回收上 。
    内存分级水位
    既要稳也要省,容器资源该怎么分配?

    文章插图
    操作系统内核会监控整个系统的内存使用情况,当可用内存低于一定水位时,就会阻塞内存分配路径 , 触发内存回收操作 。
    某些场景下,低优先级容器可能大量申请内存,导致内存水位线降职 min 水位以下 , 物理机面临内存分配和回收时 , 高优容器将会受到影响,无法及时的分配内存 。
    针对这个场景,内核新增了内存分级水位特性,允许按照优先级设置不同的 min 水位 。这样 , 在申请内存时,低优先级容器会先达到回收水位线触发低优先级容器的内存回收,而高优先级容器的内存回收水位线较低,可以正常分配 。
    内存按优先级回收由于原生内存没有对内存进行优先级区分,因此当内核走到内存回收路径,会无差别的进行内存回收动作 。此时,可能高优先级容器的内存被回收 , 而低优先级容器内存则完好无损 。
    新分级体系的目标显然是要在回收内存的时候优先回收低优先级容器的内存,这样可以最大程度保护高优先级容器的内存,进而保障高优先级容器的性能表现 。 
    既要稳也要省,容器资源该怎么分配?

    文章插图
    图片
    基于优先级回收的思想,内核所做的就是识别容器优先级,然后按照容器优先级逐一回收内存 , 直至内存水位线恢复健康水平 。
    既要稳也要省,容器资源该怎么分配?

    文章插图
    先回收B级容器的内存
    既要稳也要省,容器资源该怎么分配?

    文章插图
    再回收A级容器的内存
    既要稳也要省,容器资源该怎么分配?

    文章插图
     
    集群资源保障:quota业务在申请容器服务的时候,一般需要指定单个容器的规格(CPU/内存大?。┖蜕昵氲氖??。汇总服务总共所需的资源量,即为 quota,quota 管理的最小单位为成本账户 。
    既要稳也要省,容器资源该怎么分配?

    文章插图
    图片
    可以看到 , 在新分级体系下,quota 按照容器优先级,分为了对应的S级/A级/B级 quota 。quota 是用于描述业务的资源申请量 , 而对于弹性云和系统部而言, 则可以根据 quota,进行物理资源的准备 。例如对于某个成本账户,申请的 quota 如下所示:  
    既要稳也要省,容器资源该怎么分配?

    文章插图
    图片
    我们可以清楚看到,业务申请的 quota 量与实际准备物理机资源量之间的对应关系 。
    通过建立并规范 quota 的申请和使用流程,新分级体系能根据资源超卖规则有效的将 quota 的申请量与后台真实物理资源的准备量结合起来 , 从而实现资源层面的强保障 。另外,在 quota 体系逐步完善之后,还能根据 quota 使用率和容器的 CPU 使用率对 quota 进行有效的资源管控 。


    推荐阅读