17.8. 配置内存页面大小
通过配置内存页面大小,系统管理员可以在特定节点上实施更高效的内存管理,以适应工作负载要求。Node Tuning Operator 提供了使用性能配置集配置巨页和内核页面大小的方法。
17.8.1. 配置内核页面大小 复制链接链接已复制到粘贴板!
使用性能配置集中的 kernelPageSize 规格在特定节点上配置内核页面大小。为内存密集型高性能工作负载指定较大的内核页面大小。
对于具有 x86_64 或 AMD64 架构的节点,您只能为 kernelPageSize 规格指定 4k。对于具有 AArch64 架构的节点,您可以为 kernelPageSize 规格指定 4k 或 64k。在使用 64k 选项前,您必须禁用实时内核。默认值为 4k。
先决条件
-
使用具有
cluster-admin角色的用户访问集群。 -
安装 OpenShift CLI(
oc)。
流程
通过创建一个定义
PerformanceProfile资源的 YAML 文件,为要配置内核页面大小的目标节点创建一个性能配置集:pp-kernel-pages.yaml文件示例apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: example-performance-profile #... spec: kernelPageSize: "64k"1 realTimeKernel: enabled: false2 nodeSelector: node-role.kubernetes.io/worker: ""3 将性能配置集应用到集群:
$ oc create -f pp-kernel-pages.yaml输出示例
performanceprofile.performance.openshift.io/example-performance-profile created
验证
运行以下命令,在应用性能配置集的节点上启动 debug 会话:
$ oc debug node/<node_name>1 - 1
- 将
<node_name>替换为节点的名称,并应用了性能配置集。
运行以下命令,验证内核页面大小是否已设置为您在性能配置集中指定的值:
$ getconf PAGESIZE输出示例
65536
17.8.2. 配置巨页 复制链接链接已复制到粘贴板!
节点必须预先分配在 OpenShift Container Platform 集群中使用的巨页。使用 Node Tuning Operator 在特定节点中分配巨页。
OpenShift Container Platform 提供了创建和分配巨页的方法。Node Tuning Operator 提供了一种更易于使用性能配置集的方法。
例如,在性能配置集的 hugepages pages 部分,您可以指定多个块的 size、count 以及可选的 node:
hugepages:
defaultHugepagesSize: "1G"
pages:
- size: "1G"
count: 4
node: 0
- 1
node是分配巨页的 NUMA 节点。如果省略了node,该页面将平均分布在所有 NUMA 节点中。
等待显示更新已完成的相关机器配置池状态。
这些是分配巨页的唯一配置步骤。
验证
要验证配置,请查看节点上的
/proc/meminfo文件:$ oc debug node/ip-10-0-141-105.ec2.internal# grep -i huge /proc/meminfo输出示例
AnonHugePages: ###### ## ShmemHugePages: 0 kB HugePages_Total: 2 HugePages_Free: 2 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: #### ## Hugetlb: #### ##使用
oc describe报告新大小:$ oc describe node worker-0.ocp4poc.example.com | grep -i huge输出示例
hugepages-1g=true hugepages-###: ### hugepages-###: ###
17.8.3. 分配多个巨页大小 复制链接链接已复制到粘贴板!
您可以在同一容器下请求具有不同大小的巨页。这样,您可以定义由具有不同巨页大小的容器组成的更复杂的 pod。
例如,您可以把大小定义为 1G 和 2M,Node Tuning Operator 会在节点上配置这两个大小,如下所示:
spec:
hugepages:
defaultHugepagesSize: 1G
pages:
- count: 1024
node: 0
size: 2M
- count: 4
node: 1
size: 1G