Kubernetes 使用大页

什么是大页面?

当一个进程使用一些内存时,CPU标记该进程使用的RAM。为了 高效,CPU接4K字节按块分配(许多平台默认)。这些块成为页面。由于进程地址空间是虚拟的,因此CPU和OS必须记住那个页面属于哪个进程,使用了更多的内存,需要管理更多的页面。为了避免对页面进行繁重的调度,大多数当前的CPU体系结构都支持大于4KB的页面,在Linux上,它称为巨大页面。

Kubernetes

如今,我们处于容器化领域,Kubernetes用一个基于自动化的部署,扩展和管理的开源容器编排系统。但是在我们的例子中,某些需要巨大页面能力的应用程序就是DPDK。

那么我们可以在kubernetes中使用大页面吗?

根据官方描述,如果kubernetes版本>=1.10,则默认启动HugePages,否则你必须自己启用它。

登录到你的Kubernetes节点机器。打开并编辑/etc/default/kubelet此文件,找到--feature-gates=这些文本,添加一些文本以使其看起来像--feature-gates=HugePages=true

systemctl daemon-reload
systemctl restart kubelet

然后进行下一步

mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
# 1024 is the total number of hugepages, you can using others value as you need
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

现在登录master,并使用kubectl describe nodes检查是否启用了大页面。你可能会看到类似下面的内容

apiVersion: v1
kind: Node
metadata:
  name: node1
# ignore...
status:
  capacity:
    memory: 10Gi
    hugepages-2Mi: 1Gi
  allocatable:
    memory: 9Gi
    hugepages-2Mi: 1Gi
# ignore...  

一个示例Pod

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
# use the image you like
    volumeMounts:
    - mountPath: /hugepages
      name: hugepage
    resources:
      requests:
        hugepages-2Mi: 1Gi
      limits:
        hugepages-2Mi: 1Gi
  volumes:
  - name: hugepage
    emptyDir:
      medium: HugePages
posted @ 2021-04-08 16:38  把酒问苍天  阅读(868)  评论(0编辑  收藏  举报