Kubernetes内存请求与限制在cgroup v2中的工作机制及memory.high参数的具体作用问询
Kubernetes内存请求与限制在cgroup v2中的工作机制及memory.high参数的具体作用问询
大家好,我最近在琢磨Kubernetes里的内存请求(request)和限制(limit)在cgroup v2下的工作机制,先跟大家同步下我目前理清的K8s配置与cgroup v2参数的对应关系:
memory.min会被设置为K8s中配置的内存请求(memory request)的值memory.max直接对应K8s里的内存限制(memory limit)的值memory.high默认会设为内存限制的80%,但如果内存请求和限制的数值完全相等,这个参数就不会被设置memory.low始终保持未设置状态
其中memory.max的逻辑我倒是搞懂了:当cgroup里的进程尝试分配内存页时,要是分配后内存使用量会超过memory.max,而且没办法从这个cgroup内部回收足够的内存来把使用量控制在memory.max范围内,内核就会触发OOM killer,杀掉cgroup里的某个进程来释放内存,这个逻辑很直观。
但memory.high就有点让人摸不着头脑了,我查了内核文档,里面说当内存使用达到这个高水位线时,对应的cgroup会处于“高回收压力”状态,但这个“高回收压力”具体指什么?这个参数实际运作起来到底会对cgroup里的进程产生哪些具体影响?实在是没太搞明白,想请教下各位大佬。
备注:内容来源于stack exchange,提问作者Grisu47
相关产品推荐
相关产品推荐

