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