仮想マシンのプロセススケジューリングを考える
田所秀和
2008/12/9
仮想マシンのスケジューリングの重要性
近年、サーバの利用率を向上させるために、仮想マシンを用いて複数のサーバを1台のマシンに統合することが多くなっています。Xenのような仮想化技術では、それぞれのマシンのスケジューリングを「仮想マシンモニタ(ハイパーバイザ:VMM)」を使って行うのが一般的ですが、仮想マシンモニタによる仮想マシンスケジューリングは、仮想化されたシステム全体のパフォーマンスの特性に大きな影響を与えます。このように、仮想マシンのスケジューリングについて知ることは、サーバ統合において重要なことであるといえます。
Xenのドメインスケジューラ 2種類のスケジューリングポリシー
現在のXenで利用可能なドメインスケジューラは、sedfとcreditです。古いバージョン(Xen 3.0.2まで)では、bvtというスケジューラも利用可能でした。これら3つのスケジューラについて説明します。
bvt、sedfスケジューラはSMP環境でスケールしない
borrowed virtual time(bvt)スケジューラは、現在のバージョンのXenではサポートしていません。bvtは、ドメインごとに最小時間が決められていて、その間はドメインは割り込まれずに実行することが保証されます。
Simple Early Deadline First(sedf)スケジューラでは、ドメインごとに周期とタイムスライスが割り当てられ、この周期ごとにタイムスライスだけCPUを使うことができます。
これら2つのスケジューラには、SMP(Symmetric Multi Processing:対称型マルチプロセッシング)環境でスケーラビリティ(拡張性)に欠けるという欠点があります。具体的には、物理CPUが複数ある環境で、CPU間で自動でロードバランスすることができません。
このような問題を解決するために、次で述べるcreditスケジューラが開発されました。creditスケジューラでは、物理CPUごとにランキュー(プロセスの実行待ちリスト)が存在し、ランキュー間のロードバランスを自動で行ってくれます。
creditスケジューラ
現在のXen仮想マシンモニタでは、ドメインスケジューラとしてcreditスケジューラを用いています。creditスケジューラでは、各ドメインにcreditという数が割り当てられます。そして、このcreditの値に比例して、CPU時間が公平に割り当てられます。2つのドメインに同じ数が割り当てられた場合には、同じCPU時間が割り当てられることになります。
各物理CPUは1つのランキューを持ち、そのランキュー上で仮想CPUが実行を待ちます。仮想CPUは、UNDERとOVERという2つの状態のいずれかになります。UNDERは、仮想CPUが割り当てられたcreditを使い果たしていない状態を表し、OVERは、仮想CPUが割り当てられたcreditを使い果たしてしまった状態を表します。
ドメインのcreditは、現在実行中の仮想CPUから10ミリ秒の割り込みごとに、一定量ずつ引かれていきます。もし、すべてのドメインのcreditが0になったら、その時点ですべてのドメインのcreditがリセットされます。
仮想CPUの実行が選択されるとき、必ずUNDER状態の仮想CPUがOVER状態の仮想CPUよりも優先されます。creditを使い切った仮想CPUは、UNDER状態の仮想CPUが存在しないときのみ実行されます。これによって、公平にCPUを使った場合CPUがアイドルになってしまうことを防ぎ、CPU時間をより効率的に使うことができます。
Xenのcreditスケジューラでは、creditの配分をweightというパラメータで設定します。つまり、weightは相対的なCPUの割り当て時間を表すことになります。ここでは具体的な例として、ドメインAのweightの値が512で、ドメインBのweightの値が256である場合を考えます。
この場合、2つのドメインがCPUを使おうとした場合には、ドメインAはドメインBの2倍のCPU時間を割り当てられます。
weightの値は、1から最大65535までの値を設定することができます。指定しない場合、デフォルトの値である256が設定されます。
さらに、CAPというパラメータを使うことで、CPUがアイドルになったとしても、ドメインが使うCPU時間の上限を設定することも可能です。CAPは、物理CPUを100としたときの割合を表します。例えば、100ならば物理CPU1つ分、50なら物理CPU半分、400なら物理CPU4つ分を表します。この値はデフォルトでは0になっていて、上限がないことを表しています。
次ページからは具体的なcreditスケジューラの利用方法を紹介していきます。
1/3 |
Index | |
仮想マシンのプロセススケジューリングを考える | |
Page 1 ・仮想マシンのスケジューリングの重要性 ・bvt、sedfスケジューラはSMP環境でスケールしない ・creditスケジューラ |
|
Page 2 ・creditスケジューラの利用方法 |
|
Page 3 ・仮想マシンモニタによるプロセススケジューリング |
Databaseフォーラム全記事インデックス |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|