過去問ドリル

LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問30

仮想化基盤の構築/仮想ディスクとQEMUの操作

NUMAノード0と1を持つKVMホストで、仮想マシンvm1のメモリがノード1のリモートメモリにまたがると性能が落ちることが分かった。次回の起動以降、vm1のメモリをNUMAノード0からだけ割り当てさせたい。コマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)

正解: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ノードから割り当てるかは決めません。
LinuCレベル3 プラットフォームスペシャリストの問題を演習モードで解く