月曜日, 1月 25th, 2010
Xenにおける仮想CPU
仮想化環境において、CPU割り当ての仕組みはどのようになっているのだろうか?
参考サイトからひろった話をまとめてみた。
Xenのドメインにおいては、名ドメインごとに仮想化されたCPUに実CPUを割り当てて
おり、CPU自体も仮想化されている。
ドメイン・スケジューラの役割
ドメイン・スケジューラはXenに備わっている、ドメインの実行を制御する機能。
また、ドメインを切り替えるドメイン・ディスパッチャという機能もある。
仮想CPUはドメインの起動時に定義され、その後ドメイン・スケジューラが実CPUと
仮想CPUとの間に入り、プロセスを制御する。ドメイン・スケジューラは実CPUの処理時間
をごく短い単位ごとに区切り、時分割で名仮想CPUに実CPUを割り当てていく。
平たくいうと、Xenにおいてはドメイン・スケジューラが、実CPUの仮想CPUへの割り当て
をコントロールしているわけだ。
実CPUが複数ある場合、ドメイン・スケジューラは名実CPUごとに別々に動作する。
ひとつの実CPUを複数の仮想CPUに割り当てることも可能。名ドメインUに、複数の仮想
CPUを設定することができる。逆に実CPUが4つであっても、ドメイン0への仮想CPU
の割り当ては1つとすることもできる。ドメイン0は管理用のため負荷の高いプログラム
を動かす機械が少ないから、このようにした方が良い場合もあるらしい。
CPUの割り当ては、柔軟に対応できるようになっているようだ。
仮想CPUの情報を確認する
ドメインの仮想CPUの情報を表示するには、以下コマンドを実行する。
# xm vcpu-list
表示結果のVCPUs列は、ドメイン用に定義された仮想CPUの番号となる。隣のCPU列は、
名VCPUに割り当てられた実CPUの番号。Domein-0行のCPU列が0〜3まであったら、
実CPUの数は4つ。
※この「実CPU」というのが、実機マシンにおけるハイパースレッディングの「仮想CPU」
も含まれるのかどうかは不明。。
また、xm listコマンドでもVCPU数を確認できる。
CPUの割り当てを設定する
仮想CPUの設定方法について。ドメイン0とドメインUでは設定方法が異なる。
ドメイン0に割り当てる仮想CPUの数は/etc/xen/xend-config.sxpで定義される。
ドメイン0への仮想CPU割り当てを「1」にするには以下コマンドを実行する。
# xm vcpu-set 0 1
1つ目の引数はドメインID、2つめの引数は割り当てる仮想CPU数を表す。
ドメインUに割り当てる仮想CPUの数は、ドメインを起動する再に用いる設定ファイル
/etc/xen/ドメイン名 の、vcpusパラメータで指定する。
あるいは以下コマンド実行。
# xm vcpu-pin 1 0 1
引数は左から順に「ドメインID」「仮想CPUの番号」「実CPUの番号」を表す。
…しかしこうやって書いていても、何が何だかよくわからない…。
やはり実機をいじらないことにはね。
ちなみに、Xenではドメインを稼働させたまま割り当てCPUの数を変更することが可能。
次は仮想メモリ容量の変更についても書いておきたい。
概ね、以下より抜粋
http://itpro.nikkeibp.co.jp/article/COLUMN/20080130/292528/?ST=lin-server&P=1
関連記事
LinuxでCPUの搭載数を調べる
