14.5. 激活内核相同的页面合并 (KSM)


当节点过载时,OpenShift Virtualization 可以激活内核相同的页面合并 (KSM)。KSM 去除在虚拟机 (VM) 的内存页面中找到的相同数据。如果您有类似的虚拟机,则 KSM 可以在单个节点上调度更多虚拟机。

重要

您必须只使用带有可信工作负载的 KSM。

14.5.1. 先决条件

  • 确保管理员已在您希望 OpenShift Virtualization 激活 KSM 的任何节点上配置了 KSM 支持。

14.5.2. 关于使用 OpenShift Virtualization 激活 KSM

当节点遇到内存过载时,您可以将 OpenShift Virtualization 配置为激活内核相同的页面合并(KSM)。

14.5.2.1. 配置方法

您可以使用 OpenShift Container Platform Web 控制台或编辑 HyperConverged 自定义资源(CR)来启用或禁用所有节点的 KSM 激活功能。HyperConverged CR 支持更精细的配置。

CR 配置

您可以通过编辑 HyperConverged CR 的 spec.configuration.ksmConfiguration 小节来配置 KSM 激活功能。

  • 您可以通过编辑 ksmConfiguration 小节来启用功能和配置设置。
  • 您可以通过删除 ksmConfiguration 小节来禁用该功能。
  • 您可以通过在 ksmConfiguration.nodeLabelSelector 字段中添加节点选择语法来允许 OpenShift Virtualization 只在节点子集上启用 KSM。
注意

即使 OpenShift Virtualization 中禁用了 KSM 激活功能,管理员仍然可以在支持它的节点上启用 KSM。

14.5.2.2. KSM 节点标签

OpenShift Virtualization 识别配置为支持 KSM 并应用以下节点标签的节点:

kubevirt.io/ksm-handler-managed: "false"
当 OpenShift Virtualization 在遇到内存过载的节点上激活 KSM 时,该标签被设置为 "true"。如果管理员激活 KSM,则该标签没有设置为 "true"
kubevirt.io/ksm-enabled: "false"
当节点上激活 KSM 时,此标签被设置为 "true",即使 OpenShift Virtualization 没有激活 KSM。

这些标签不适用于不支持 KSM 的节点。

14.5.3. 使用 Web 控制台配置 KSM 激活

您可以使用 OpenShift Container Platform Web 控制台允许 OpenShift Virtualization 在集群中的所有节点上激活内核相同的页面合并 (KSM)。

流程

  1. 在侧边菜单中点 Virtualization Overview
  2. 选择 Settings 选项卡。
  3. 选择 Cluster 选项卡。
  4. 扩展 资源管理
  5. 为所有节点启用或禁用功能:

    • 内核同页合并(KSM) 设置为 on。
    • 内核同页合并(KSM) 设置为 off。

14.5.4. 使用 CLI 配置 KSM 激活

您可以通过编辑 HyperConverged 自定义资源(CR)来启用或禁用 OpenShift Virtualization 内核相同的页面合并(KSM)激活功能。如果您希望 OpenShift Virtualization 只在某个节点子集上激活 KSM,则使用此方法。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  1. 运行以下命令,在默认编辑器中打开 HyperConverged CR:

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
    Copy to Clipboard Toggle word wrap
  2. 编辑 ksmConfiguration 小节:

    • 要为所有节点启用 KSM 激活功能,请将 nodeLabelSelector 值设置为 {}。例如:

      apiVersion: hco.kubevirt.io/v1beta1
      kind: HyperConverged
      metadata:
        name: kubevirt-hyperconverged
        namespace: openshift-cnv
      spec:
        configuration:
          ksmConfiguration:
            nodeLabelSelector: {}
      # ...
      Copy to Clipboard Toggle word wrap
    • 要在节点的子集上启用 KSM 激活功能,请编辑 nodeLabelSelector 字段。添加与 OpenShift Virtualization 启用 KSM 的节点匹配的语法。例如,以下配置允许 OpenShift Virtualization 在 <first_example_key><second_example_key> 被设置为 "true" 的节点上启用 KSM。

      apiVersion: hco.kubevirt.io/v1beta1
      kind: HyperConverged
      metadata:
        name: kubevirt-hyperconverged
        namespace: openshift-cnv
      spec:
        configuration:
          ksmConfiguration:
            nodeLabelSelector:
              matchLabels:
                <first_example_key>: "true"
                <second_example_key>: "true"
      # ...
      Copy to Clipboard Toggle word wrap
    • 要禁用 KSM 激活功能,请删除 ksmConfiguration 小节。例如:

      apiVersion: hco.kubevirt.io/v1beta1
      kind: HyperConverged
      metadata:
        name: kubevirt-hyperconverged
        namespace: openshift-cnv
      spec:
        configuration:
      # ...
      Copy to Clipboard Toggle word wrap
  3. 保存该文件。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat