kubernetes 管理内存大页 HugePages
查看系统中内存大页的配置
cat /proc/meminfo | grep Huge
AnonHugePages: 96256 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
动态调整内存大页配置
$ echo 128 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
$ echo 16 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
查看
cat /proc/meminfo | grep Huge
AnonHugePages: 100352 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 128
HugePages_Free: 128
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 17039360 kB
查看 kubernetes nodes 资源
查看nodes节点是否分配大页资源,如下可见,内存大页的资源为0
kubectl describe nodes dd1
Capacity:
cpu: 40
ephemeral-storage: 575646864Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 527959648Ki
pods: 110
Allocatable:
cpu: 40
ephemeral-storage: 530516148985
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 527857248Ki
pods: 110
重启kubelet 服务,再查看 nodes 的信息,可见内存大页资源已分配
kubectl describe nodes dd1
Capacity:
cpu: 40
ephemeral-storage: 575646864Ki
hugepages-1Gi: 16Gi
hugepages-2Mi: 256Mi
memory: 527959648Ki
pods: 110
Allocatable:
cpu: 40
ephemeral-storage: 530516148985
hugepages-1Gi: 16Gi
hugepages-2Mi: 256Mi
memory: 510817888Ki
pods: 110
配置pod 使用内存大页
apiVersion: v1
kind: Pod
metadata:
name: huge-pages-example
spec:
containers:
- name: example
image: fedora:latest
command:
- sleep
- inf
volumeMounts:
- mountPath: /hugepages-2Mi
name: hugepage-2mi
- mountPath: /hugepages-1Gi
name: hugepage-1gi
resources:
limits:
hugepages-2Mi: 100Mi
hugepages-1Gi: 2Gi
memory: 100Mi
requests:
memory: 100Mi
volumes:
- name: hugepage-2mi
emptyDir:
medium: HugePages-2Mi
- name: hugepage-1gi
emptyDir:
medium: HugePages-1Gi
pod 启动之后,查看挂载信息
Mounts:
/hugepages-2Mi from hugepage-2mi (rw)
Volumes:
hugepage-2mi:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium: HugePages-2Mi
SizeLimit: <unset>
如上,pod 即可使用内存大页资源