17.8. メモリーページサイズの設定
システム管理者は、メモリーページサイズを設定することにより、ワークロード要件に合わせてより効率的なメモリー管理を特定のノードに実装できます。Node Tuning Operator は、パフォーマンスプロファイルを使用して、huge page とカーネルページサイズを設定する方法を提供します。
17.8.1. カーネルページサイズの設定 リンクのコピーリンクがクリップボードにコピーされました!
特定のノードのカーネルページサイズを設定するには、パフォーマンスプロファイルの kernelPageSize 仕様を使用します。メモリーを大量に消費する高パフォーマンスのワークロードには、大きなカーネルページサイズを指定してください。
x86_64 または AMD64 アーキテクチャーのノードの場合、kernelPageSize 仕様には 4k のみを指定できます。AArch64 アーキテクチャーのノードの場合、kernelPageSize 仕様には 4k または 64k を指定できます。デフォルト値は 4k です。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
PerformanceProfileリソースを定義する YAML ファイルを作成して、カーネルページサイズを設定するノードを対象とするパフォーマンスプロファイルを作成します。pp-kernel-pages.yamlファイルの例apiVersion: performance.openshift.io/v1 kind: PerformanceProfile metadata: name: example-performance-profile #... spec: kernelPageSize: "64k"1 nodeSelector: node-role.kubernetes.io/worker: ""2 パフォーマンスプロファイルをクラスターに適用します。
$ oc create -f pp-kernel-pages.yaml出力例
performanceprofile.performance.openshift.io/example-performance-profile created
検証
次のコマンドを実行して、パフォーマンスプロファイルを適用したノードでデバッグセッションを開始します。
$ oc debug node/<node_name>1 - 1
<node_name>は、パフォーマンスプロファイルを適用したノードの名前に置き換えます。
次のコマンドを実行して、カーネルページサイズがパフォーマンスプロファイルで指定した値に設定されていることを確認します。
$ getconf PAGESIZE出力例
65536
17.8.2. Huge Page の設定 リンクのコピーリンクがクリップボードにコピーされました!
ノードは、OpenShift Container Platform クラスターで使用される Huge Page を事前に割り当てる必要があります。Node Tuning Operator を使用し、特定のノードで Huge Page を割り当てます。
OpenShift Container Platform は、Huge Page を作成し、割り当てる方法を提供します。Node Tuning Operator は、パフォーマンスプロファイルを使用して、これをより簡単に行う方法を提供します。
たとえば、パフォーマンスプロファイルの hugepages pages セクションで、size、count、およびオプションで node の複数のブロックを指定できます。
hugepages:
defaultHugepagesSize: "1G"
pages:
- size: "1G"
count: 4
node: 0
- 1
nodeは、Huge Page が割り当てられる NUMA ノードです。nodeを省略すると、ページはすべての NUMA ノード間で均等に分散されます。
更新が完了したことを示す関連するマシン設定プールのステータスを待機します。
これらは、Huge Page を割り当てるのに必要な唯一の設定手順です。
検証
設定を確認するには、ノード上の
/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. 複数の Huge Page サイズの割り当て リンクのコピーリンクがクリップボードにコピーされました!
同じコンテナーで異なるサイズの Huge Page を要求できます。これにより、Huge Page サイズのニーズの異なる複数のコンテナーで構成されるより複雑な Pod を定義できます。
たとえば、サイズ 1G と 2M を定義でき、Node Tuning Operator は以下に示すようにノード上に両方のサイズを設定します。
spec:
hugepages:
defaultHugepagesSize: 1G
pages:
- count: 1024
node: 0
size: 2M
- count: 4
node: 1
size: 1G