20.11. CPU モデルとトポロジー
このセクションでは、CPU モデルの要件を説明します。すべてのハイパーバイザーには、ゲストにデフォルトで表示される CPU 機能に関する独自のポリシーがあることに注意してください。QEMU/KVM によりゲストに提示される CPU 機能のセットは、ゲスト仮想マシンの設定で選択された CPU モデルによって異なります。
qemu32
と qemu64
は基本的な CPU モデルですが、他のモデル (追加機能付き) も利用できます。各モデルとそのトポロジーは、ドメイン XML の以下の要素を使用して指定されます。
図20.13 CPU モデルとトポロジーの例 1
<cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='disable' name='lahf_lm'/> </cpu>
図20.14 CPU モデルとトポロジーの例 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
図20.15 CPU モデルとトポロジーの例 3
<cpu mode='host-passthrough'/>
CPU モデルやその機能に制限を設けない場合は、以下のような簡単な cpu 要素を使用できます。
図20.16 CPU モデルとトポロジーの例 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
ドメイン XML のこのセクションのコンポーネントは以下のとおりです。
要素 | 説明 |
---|---|
<cpu> | この要素には、vCPU 機能セットのすべてのパラメーターが含まれています。 |
<match> | <cpu> 要素に示されている機能が、使用可能な vCPU とどの程度一致している必要があるかを指定します。<topology> が <cpu> 要素にネストされた唯一の要素である場合は、match 属性を省略できます。match 属性に使用できる値は、以下のとおりです。
match 属性が <cpu> 要素から省略されている場合、デフォルト設定の match='exact' が使用されます。 |
<mode> | このオプション属性を使用すると、ゲスト仮想マシンの CPU を、ホストの物理マシンの CPU にできるだけ近づけるように設定できます。mode 属性に使用できる値は、以下のとおりです。
|
<model> | ゲスト仮想マシンが要求する CPU モデルを指定します。利用可能な CPU モデルとその定義の一覧は、libvirt の データディレクトリーにインストールされている cpu_map.xml ファイルを参照してください。ハイパーバイザーが、正確な CPU モデルを使用できない場合、libvirt は、CPU 機能の一覧を維持しながら、ハイパーバイザーが対応する最も近いモデルに自動的にフォールバックします。オプションの fallback 属性を使用すると、この動作を禁止できます。この場合、対応していない CPU モデルを要求するドメインを起動しようとすると失敗します。フォールバック属性で対応している値は、allow (デフォルト) と forbid です。オプションの vendor_id 属性を使用すると、ゲスト仮想マシンが認識するベンダー id を設定できます。ちょうど 12 文字の長さである必要があります。設定しない場合は、ホスト物理マシンのベンダー id が使用されます。一般的な値は、AuthenticAMD および GenuineIntel です。 |
<vendor> | ゲスト仮想マシンが要求する CPU ベンダーを指定します。この要素がないと、ゲスト仮想マシンは、ベンダーに関係なく、指定された機能と一致する CPU で実行します。サポートされているベンダーの一覧は、cpu_map.xml を参照してください。 |
<topology> | ゲスト仮想マシンに提供される仮想 CPU の要求されたトポロジーを指定します。ソケット、コア、およびスレッドには、それぞれゼロ以外の値を 3 つ指定する必要があります。つまり、CPU ソケットの合計数、ソケットごとのコア数、およびコアごとのスレッド数です。 |
<feature> | 選択した CPU モデルが提供する機能を微調整するために使用する、ゼロ以上の要素を含むことができます。既知の機能名のリストは、CPU モデルと同じファイルにあります。各機能要素の意味は、ポリシー属性により異なります。この属性は、次のいずれかの値に設定する必要があります。
|
20.11.1. ゲスト仮想マシンの NUMA トポロジー
ゲスト仮想マシンの NUMA トポロジーは、
<numa>
要素とドメイン XML の以下を使用して指定できます。
図20.17 ゲスト仮想マシンの NUMA トポロジー
<cpu> <numa> <cell cpus='0-3' memory='512000'/> <cell cpus='4-7' memory='512000'/> </numa> </cpu> ...
各セル要素は、NUMA セルまたは NUMA ノードを指定します。
cpus
は、ノードの一部である CPU または CPU の範囲を指定します。memory
は、ノードメモリーを kibibytes (1024 バイトのブロック) で指定します。各セルまたはノードには、0 から始まる昇順で cellid
または nodeid
が割り当てられます。