3.2.7 CPU/内存
CPU
内存
容器在使用内存时主要有以下两个方面的约束:
�自身内存限制:当容器自身的内存(含Page Cache)接近容器上限时,会触发内核的内存回收子系统,这个过程会影响容器内应用的内存申请和释放的性能。
�节点内存限制:当容器内存超卖(Memory Limit>Request)导致整机内存不足,会触发内核的全局内存回收,这个过程对性能影响较大,极端情况甚至导致整机异常
图:Pod内存使用示例
当Pod自身的内存使用(含Page Cache)接近声明的Limit值时,会触发内存子系统(Memcg)级别的直接内存回收,阻塞进程执行。如果此时的内存申请速度超过回收速度,容器会触发OOMKilled并释放内存。应用管理员可能会调高应用的内存Limit,以降低Pod OOM等风险,但这也导致整机内存的Limit之和可能超出物理容量,即处于内存超卖状态。超卖状态下,某个Pod大量申请内存,可能造成整机内存不足,导致其他Pod申请内存时触发整机内存回收或OOM(Kubernetes默认不启用Swap),进而影响应用表现。在上述两种情形中,个别Pod可能影响其他Pod的内存访问性能,即使这些Pod的内存使用未超过Request声明,应用性能仍会受到较大影响。
当Pod自身的内存使用(含Page Cache)接近声明的Limit值时,会触发内存子系统(Memcg)级别的直接内存回收,阻塞进程执行。如果此时的内存申请速度超过回收速度,容器会触发OOMKilled并释放内存。应用管理员可能会调高应用的内存Limit,以降低Pod OOM等风险,但这也导致整机内存的Limit之和可能超出物理容量,即处于内存超卖状态。超卖状态下,某个Pod大量申请内存,可能造成整机内存不足,导致其他Pod申请内存时触发整机内存回收或OOM(Kubernetes默认不启用Swap),进而影响应用表现。在上述两种情形中,个别Pod可能影响其他Pod的内存访问性能,即使这些Pod的内存使用未超过Request声明,应用性能仍会受到较大影响。
ACK引入容器内存QoS能力,通过ack-slo-manager配合Alibaba Cloud Linux 2为应用提升内存性能。当功能开启时,ack-slo-manager依据容器参数自适应配置内存子系统(Memcg),在保障节点内存资源公平的基础上,优化内存敏感型应用的性能。
使用限制