仮想マシンのプロセススケジューリングを考える


東京工業大学
田所秀和
2008/12/9

仮想マシンモニタによるプロセススケジューリング

 仮想マシンモニタによる古典的な仮想マシンスケジューラは、仮想マシンのみしかスケジューリングしません。仮想マシンのみのスケジューリングでは、システム全体で特定のプロセスを優先することは難しいのです。

 例えば、1つの仮想マシンの中に、優先度を高くしたいプロセスとそうでないプロセスがあったとします。このとき、仮想マシンモニタから可能なスケジューリングは、その仮想マシンの優先度をほかよりも高くすることです。

 しかし、これでは優先したくないプロセスも同時に優先することになってしまいます。また、ゲストOS上で優先度をつけた場合でもうまくいきません。これは、仮想マシン上で動くゲストOS内のスケジューリングだけでは、異なる仮想マシン上で動くプロセスに優先度を付けることができないからです。

 このような問題を解決するために、われわれの研究室では、仮想マシンモニタから直接ゲストOSのプロセスをスケジューリングするシステムを開発しています。

 このシステムでは、仮想マシンモニタから仮想マシン上のゲストOSのランキューを操作することで、ゲストOSのプロセススケジューリングを調整します。さらに、仮想マシンのスケジューリングおよびゲストOSの既存のスケジューリングと連携することにより、システム全体でプロセスに優先度をつけることができます。

fig

 このシステムは、Xenを用いて実装しています。全体の構成は、図のようになっています。ドメイン0も仮想マシンモニタの一部だと考え、ドメイン0上でスケジューリング用のプロセスを動かします。このプロセスがシステム全体のプロセスの優先度を管理します。ドメインU上のゲストOSのプロセスの実行を制御する手段として、ランキューの操作を行います。

 ランキューは、プロセスの実行待ちリストですので、ここからプロセスを取れば、実行されません。再開させたい場合には、再びランキューに戻すことで、実行を再開させます。

 このシステムで行った、仮想マシンモニタから仮想マシン上のゲストOSのメモリの操作や、ゲストOSの優先度の変更には、上でも紹介したxenctrlライブラリに含まれる関数を用いています。

 実際の運用に際しては環境に依存する場合が多いと思いますので、本稿では割愛しますが、ここで紹介したライブラリ群を利用してシステムのプロセス全体をうまくコントロールし、物理サーバ上での運用に近づけることができます。

参考文献
  1. [Xen-devel] New CPU scheduler w/ SMP load balancer - Xen Source
    creditスケジューラがコミットされたときの開発者によるメールです。creditスケジューラの特徴が簡潔にまとまっています。
  2. Source Browser: [root]/tools/libxc/xenctrl.h
    xenctrl ライブラリのヘッダファイルです。ライブラリで提供されている関数のプロトタイプ宣言がたくさんあります。便利な関数があるかもしれません。
  3. Comparison of the Three CPU Schedulers in Xen
    3種類のドメインスケジューラに関して、いろいろな場合のパフォーマンスを評価した論文です。

  4. 東京工業大学 千葉繁研究室
    われわれの研究室のWebページです。
次のページへ 3/3  

 Index
仮想マシンのプロセススケジューリングを考える
  Page 1
・仮想マシンのスケジューリングの重要性
・bvt、sedfスケジューラはSMP環境でスケールしない
・creditスケジューラ
  Page 2
・creditスケジューラの利用方法
→ Page 3
・仮想マシンモニタによるプロセススケジューリング

Databaseフォーラム全記事インデックス



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間