仮想マシンのプロセススケジューリングを考える
東京工業大学
田所秀和
2008/12/9
田所秀和
2008/12/9
creditスケジューラの利用方法
さて、それではcreditプロセススケジューラを実際に操作するには、どのようにすればいいでしょうか。以降ではcreditスケジューラの操作とそれぞれの挙動を見ていきます。これらの動作を理解すれば、より高度で実践的な操作を実現できるようになります。
xmコマンドを使ってコマンドラインから操作する
ドメイン0上でxm sched-creditコマンドを用いることで、各ドメインに割り当てられたcreditスケジューラのパラメータを操作することができます。以下のようなコマンドによって、ドメインに割り当てられたweightとCAPを確認することができます。
# xm sched-credit -d ドメイン
また、ドメインに対して新しいweightやCAPの値を設定するには、以下のようにします。
# xm sched-credit -d ドメイン -w weight値 # xm sched-credit -d ドメイン -c CAP値
xenctrlライブラリを使ってプログラムから操作する
xmコマンドだけではなく、C言語のプログラムを用いても、creditスケジューラのパラメータを操作することができます。これには、Xenの提供するxenctrlライブラリを用います(参考文献2)。
xenctrlライブラリには、いろいろな機能がありますが、ここではcreditスケジューラに関する機能の説明だけにとどめます。creditスケジューラのパラメータを表す構造体は以下のようになっています。16bitの整数によって、weightとCAPを表しています。
struct xen_domctl_sched_credit { uint16_t weight; uint16_t cap; };
creditスケジューラのパラメータを取得するにはxc_sched_credit_domain_get関数を用います。domid(ドメインID)からweightとCAPの値を取得するコードは以下のようになります。
#include <stdio.h> #include <xenctrl.h> int main(void) { /* パラメータを取得するドメインのID */ int domid = 12; /* 返り値を保存する変数 */ struct xen_domctl_sched_credit credit_param; /* Xenの制御用のディスクリプタ */ int xc_handle = xc_interface_open(); /* パラメータを取得 */ xc_sched_credit_domain_get(xc_handle, domid, &credit_param); printf("Domain:%d weight:%d cap:%d\n", domid, credit_param.weight, credit_param.cap); return 0; }
creditスケジューラのパラメータを設定するには、xc_sched_credit_domain_set関数を用います。
#include <xenctrl.h> int main(void) { /* パラメータを取得するドメインのID */ int domid = 12; /* 設定したい値を保存する変数 */ struct xen_domctl_sched_credit credit_param = { .weight = 128, .cap = 10 }; /* Xenの制御用のディスクリプタ */ int xc_handle = xc_interface_open(); /* weight と cap を設定 */ xc_sched_credit_domain_set(xc_handle, domid, &credit_param); return 0; }
* ここでは分かりやすくするため、ディスクリプタのクローズやエラーチェックを省いています。
2/3 |
Index | |
仮想マシンのプロセススケジューリングを考える | |
Page 1 ・仮想マシンのスケジューリングの重要性 ・bvt、sedfスケジューラはSMP環境でスケールしない ・creditスケジューラ |
|
Page 2 ・creditスケジューラの利用方法 |
|
Page 3 ・仮想マシンモニタによるプロセススケジューリング |
Databaseフォーラム全記事インデックス |
Database Expert フォーラム 新着記事
- 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」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|