8.2.3.2. 静的 Huge Page の設定
場合によっては、Huge Page をより細かく制御することが望ましい場合があります。ゲストで静的 Huge Page を使用するには、virsh edit を使用してゲスト XML 設定に以下を追加します。
<memoryBacking> <hugepages/> </memoryBacking>
これは、デフォルトのページサイズを使用する代わりに、Huge Page を使用してゲストにメモリーを割り当てるようにホストに指示します。
次のコマンドを実行して、現在の Huge Page の値を表示します。
cat /proc/sys/vm/nr_hugepages
手順8.1 Huge Page の設定
次の手順の例は、Huge Page を設定するコマンドを示しています。
- 現在の Huge Page の値を表示します。
# cat /proc/meminfo | grep Huge AnonHugePages: 2048 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
- Huge Page は 2 MB 単位で設定されます。Huge Page の数を 25000 に設定するには、次のコマンドを使用します。
echo 25000 > /proc/sys/vm/nr_hugepages
注記設定を永続的にするには、ゲストマシンの/etc/sysctl.conf
ファイルに次の行を追加します。X は意図した Huge Page の数です。# echo 'vm.nr_hugepages = X' >> /etc/sysctl.conf # sysctl -p
その後、ゲストの/etc/grub2.cfg
ファイルの/kernel
行の末尾にtransparent_hugepage=never
を追加します。 - Huge Page をマウントします。
# mount -t hugetlbfs hugetlbfs /dev/hugepages
- 仮想マシンの XML 設定の memoryBacking セクションに次の行を追加します。
<hugepages> <page size='1' unit='GiB'/> </hugepages>
- libvirtd を再起動します。
#
systemctl restart libvirtd - 仮想マシンを起動します。
#
virsh start virtual_machine - 仮想マシンがすでに実行中の場合は再起動します。
#
virsh reset virtual_machine
/proc/meminfo
の変更を確認します。# cat /proc/meminfo | grep Huge AnonHugePages: 0 kB HugePages_Total: 25000 HugePages_Free: 23425 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
Huge Page は、ホストだけでなくゲストにもメリットをもたらしますが、Huge Page の合計値は、ホストで利用可能な値よりも小さくなければなりません。