13.5. kernel samepage merging (KSM) のアクティブ化
OpenShift Virtualization は、ノードが過負荷になると kernel samepage merging (KSM) をアクティブ化できます。KSM は、仮想マシンのメモリーページにある同一データの重複を排除します。非常によく似た仮想マシンがある場合に KSM を使用すると、シングルノード上で多くの仮想マシンをスケジュールできるようになります。
KSM は、必ず信頼できるワークロードでのみ使用してください。
13.5.1. 前提条件
- OpenShift Virtualization が KSM をアクティブ化するノード上で、管理者が KSM サポートを設定していることを確認する。
13.5.2. OpenShift Virtualization を使用して KSM をアクティブ化する
ノードでメモリーの過負荷が発生した場合に kernel samepage merging (KSM) をアクティブ化するように、OpenShift Virtualization を設定できます。
13.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 を有効化できます。
13.5.2.2. KSM ノードのラベル
OpenShift Virtualization は、KSM をサポートするように設定されたノードを識別し、次のノードラベルを適用します。
kubevirt.io/ksm-handler-managed: "false"
-
メモリーの過負荷が発生しているノード上で OpenShift Virtualization が KSM をアクティブ化すると、このラベルが
"true"
に設定されます。管理者が KSM をアクティブ化した場合、このラベルは"true"
に設定されません。 kubevirt.io/ksm-enabled: "false"
-
OpenShift Virtualization が KSM をアクティブ化しなかった場合でも、KSM がノード上でアクティブ化されると、このラベルは
"true"
に設定されます。
このラベルは、KSM をサポートしていないノードには適用されません。
13.5.3. Web コンソールを使用して KSM のアクティブ化を設定する
OpenShift Container Platform Web コンソールを使用して、OpenShift Virtualization がクラスター内のすべてのノードで kernel samepage merging (KSM) をアクティブ化できるように設定できます。
手順
-
サイドメニューから、Virtualization
Overview をクリックします。 - Settings タブを選択します。
- Cluster タブを選択します。
- Resource management を展開します。
すべてのノードの機能を有効または無効にします。
- Kernel Samepage Merging (KSM) をオンに設定します。
- Kernel Samepage Merging (KSM) をオフに設定します。
13.5.4. CLI を使用して KSM のアクティブ化を設定する
HyperConverged
カスタムリソース (CR) を編集することで、OpenShift Virtualization の kernel samepage merging (KSM) アクティブ化機能を有効または無効にできます。OpenShift Virtualization がノードのサブセットのみで KSM をアクティブ化するように設定する場合は、この方法を使用します。
手順
以下のコマンドを実行して、デフォルトのエディターで
HyperConverged
CR を開きます。$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
ksmConfiguration
スタンザを編集します。すべてのノードで KSM アクティブ化機能を有効にするには、
nodeLabelSelector
の値を{}
に設定します。以下に例を示します。apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: configuration: ksmConfiguration: nodeLabelSelector: {} # ...
ノードのサブセットで 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" # ...
KSM アクティブ化機能を無効にするには、
ksmConfiguration
スタンザを削除します。以下に例を示します。apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: configuration: # ...
- ファイルを保存します。
13.5.5. 関連情報
- 仮想マシンのノードの指定
- ノードセレクターの使用による特定ノードへの Pod の配置
- Red Hat Enterprise Linux (RHEL) ドキュメントの kernel samepage merging の管理