内存精细调度能力提供了一系列功能,保证业务内存方面的服务质量保证。全方位提升内存表现,以及灵活限制容器对内存的使用。
功能一:异步回收
功能介绍
内存异步回收允许容器内部设置一个阈值,超过该阈值则会触发后台异步回收,保证对应 memcg 内使用维持一定量的空闲内存;对后续的内存分配提供保障,减少其进入直接内存回收的次数。
使用方式
2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。
3. 在修改 QoS Agent 的组件配置页面,勾选 内存 QoS 增强。
4. 单击完成。
5. 部署业务。
6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:
apiVersion: ensurance.crane.io/v1alpha1
kind: PodQOS
metadata:
name: sql
spec:
labelSelector:
matchLabels:
k8s-app: low
resourceQOS:
memoryQOS:
memAsyncReclaim:
asyncRatio: 90
asyncDistanceFactor: 200
功能二:全局水位分级
功能介绍
内存全局水位分级是指针对不同优先级的 cgroup,拥有不同的全局内存水位线;高优先级容器拥有更低的水位线,同等条件下更容易获得内存;低优先级的容器拥有更高的水位线,同等条件下更容易触发回收,进入直接回收流程。
使用方式
2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。
3. 在修改 QoS Agent 的组件配置页面,勾选 内存 QoS 增强。
4. 单击完成。
5. 部署业务。
6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:
apiVersion: ensurance.crane.io/v1alpha1
kind: PodQOS
metadata:
name: test
spec:
labelSelector:
matchLabels:
k8s-app: low
resourceQOS:
memoryQOS:
memWatermark:
watermarkRatio: 50
针对离线业务创建 PodQOS 对象:
apiVersion: ensurance.crane.io/v1alpha1
kind: PodQOS
metadata:
name: sql
spec:
labelSelector:
matchLabels:
k8s-app: mysql
resourceQOS:
memoryQOS:
memWatermark:
watermarkRatio: -50
功能三:pagecache limit
功能介绍
进行容器级别的 pagecache 隔离。
使用方式
2. 在集群里的“扩展组件”页面,找到部署成功的 QoS Agent,单击右侧的更新配置。
3. 在修改 QoS Agent 的组件配置页面,勾选 内存 QoS 增强。
4. 单击完成。
5. 部署业务。
6. 部署关联该业务的 PodQOS 对象,选择需要作用的业务,示例如下:
apiVersion: ensurance.crane.io/v1alpha1
kind: PodQOS
metadata:
name: sql
spec:
labelSelector:
matchLabels:
k8s-app: mysql-pi-000006
resourceQOS:
memoryQOS:
memPageCacheLimit:
pageCacheMaxRatio: 20
pageCacheReclaimRatio: 5
本页内容是否解决了您的问题?