17.8. 配置内存页面大小


通过配置内存页面大小,系统管理员可以在特定节点上实施更高效的内存管理,以适应工作负载要求。Node Tuning Operator 提供了使用性能配置集配置巨页和内核页面大小的方法。

17.8.1. 配置内核页面大小

使用性能配置集中的 kernelPageSize 规格在特定节点上配置内核页面大小。为内存密集型高性能工作负载指定较大的内核页面大小。

注意

对于具有 x86_64 或 AMD64 架构的节点,您只能为 kernelPageSize 规格指定 4k。对于具有 AArch64 架构的节点,您可以为 kernelPageSize 规格指定 4k64k。在使用 64k 选项前,您必须禁用实时内核。默认值为 4k

先决条件

  • 使用具有 cluster-admin 角色的用户访问集群。
  • 安装 OpenShift CLI(oc)。

流程

  1. 通过创建一个定义 PerformanceProfile 资源的 YAML 文件,为要配置内核页面大小的目标节点创建一个性能配置集:

    pp-kernel-pages.yaml 文件示例

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
        name: example-performance-profile
    #...
    spec:
        kernelPageSize: "64k" 
    1
    
        realTimeKernel:
            enabled: false 
    2
    
        nodeSelector:
            node-role.kubernetes.io/worker: "" 
    3
    Copy to Clipboard Toggle word wrap

    1
    这个示例指定内核页大小为 64k。您只能为具有 AArch64 架构的节点指定 64k。默认值为 4k
    2
    您必须禁用实时内核以使用 64k 内核页大小选项。
    3
    这个示例以具有 worker 角色的节点为目标。
  2. 将性能配置集应用到集群:

    $ oc create -f pp-kernel-pages.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    performanceprofile.performance.openshift.io/example-performance-profile created
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,在应用性能配置集的节点上启动 debug 会话:

    $ oc debug node/<node_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <node_name> 替换为节点的名称,并应用了性能配置集。
  2. 运行以下命令,验证内核页面大小是否已设置为您在性能配置集中指定的值:

    $ getconf PAGESIZE
    Copy to Clipboard Toggle word wrap

    输出示例

    65536
    Copy to Clipboard Toggle word wrap

17.8.2. 配置巨页

节点必须预先分配在 OpenShift Container Platform 集群中使用的巨页。使用 Node Tuning Operator 在特定节点中分配巨页。

OpenShift Container Platform 提供了创建和分配巨页的方法。Node Tuning Operator 提供了一种更易于使用性能配置集的方法。

例如,在性能配置集的 hugepages pages 部分,您可以指定多个块的 sizecount 以及可选的 node:

hugepages:
   defaultHugepagesSize: "1G"
   pages:
   - size:  "1G"
     count:  4
     node:  0 
1
Copy to Clipboard Toggle word wrap
1
node 是分配巨页的 NUMA 节点。如果省略了 node,该页面将平均分布在所有 NUMA 节点中。
注意

等待显示更新已完成的相关机器配置池状态。

这些是分配巨页的唯一配置步骤。

验证

  • 要验证配置,请查看节点上的 /proc/meminfo 文件:

    $ oc debug node/ip-10-0-141-105.ec2.internal
    Copy to Clipboard Toggle word wrap
    # grep -i huge /proc/meminfo
    Copy to Clipboard Toggle word wrap

    输出示例

    AnonHugePages:    ###### ##
    ShmemHugePages:        0 kB
    HugePages_Total:       2
    HugePages_Free:        2
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       #### ##
    Hugetlb:            #### ##
    Copy to Clipboard Toggle word wrap

  • 使用 oc describe 报告新大小:

    $ oc describe node worker-0.ocp4poc.example.com | grep -i huge
    Copy to Clipboard Toggle word wrap

    输出示例

                                       hugepages-1g=true
     hugepages-###:  ###
     hugepages-###:  ###
    Copy to Clipboard Toggle word wrap

17.8.3. 分配多个巨页大小

您可以在同一容器下请求具有不同大小的巨页。这样,您可以定义由具有不同巨页大小的容器组成的更复杂的 pod。

例如,您可以把大小定义为 1G2M,Node Tuning Operator 会在节点上配置这两个大小,如下所示:

spec:
  hugepages:
    defaultHugepagesSize: 1G
    pages:
    - count: 1024
      node: 0
      size: 2M
    - count: 4
      node: 1
      size: 1G
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat