LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問30
仮想化基盤の構築/仮想ディスクとQEMUの操作NUMAノード0と1を持つKVMホストで、仮想マシンvm1のメモリがノード1のリモートメモリにまたがると性能が落ちることが分かった。次回の起動以降、vm1のメモリをNUMAノード0からだけ割り当てさせたい。コマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)
- Avirsh vcpupin vm1 0 0-7 --config
- Bvirsh emulatorpin vm1 0-7 --config
- Cvirsh numatune vm1 --mode strict --nodeset 0 --config
- Dvirsh memtune vm1 --hard-limit 8388608 --config
正解:C
解説
virsh numatuneは、仮想マシンのメモリをどのNUMAノードから割り当てるかの方針(ドメインXMLの<numatune>要素)を設定するコマンドです。--mode strictと--nodeset 0を指定すると、メモリはノード0からだけ割り当てられ、ノード0で足りなくなっても他のノードへはあふれません。--configは永続的な定義を変更するため、次回の起動から有効になります。性能を詰める場合は、vCPUもvirsh vcpupinで同じノードのCPUへ固定し、CPUとメモリの配置をそろえるのが一般的です。
選択肢ごとの解説
- A誤り。virsh vcpupinは、ゲストのvCPUを実行するホストのCPUを固定するコマンドです。メモリをどのNUMAノードから割り当てるかは指定できません。
- B誤り。virsh emulatorpinは、QEMUのエミュレータスレッド(vCPU以外の処理)を実行するホストのCPUを固定するコマンドで、メモリの割り当て先は決めません。
- C正しい。virsh numatuneで--mode strictと--nodeset 0を指定すると、メモリをNUMAノード0からだけ割り当てさせられます。
- D誤り。virsh memtuneは、cgroupによるメモリ使用量の上限などを設定するコマンドです。使用量を制限するだけで、どのNUMAノードから割り当てるかは決めません。