SP1までわかる!Windows Server 2008 R2入門 第3回
スケジューリングには新機能
Windows Server 2008 R2はメモリ管理も強化
2011年06月01日 06時00分更新
スケジューリングには新機能
Windows Server 2008 R2のスケジューリングは従来と同様、スレッド単位で行なわれるが、CPUの割り当てメカニズムに2つの新しい機能が加わった。それが、「ダイナミックフェアシェアCPUスケジューリング(DFSS)」と、「ユーザーモードスケジューリング(UMS)」である。
DFSSは、おもにターミナルサービス(Windows Server 2008 R2の用語では「リモートデスクトップサービス」)のために考案された機能だ。リモートデスクトップサービスでは、特定のユーザーがCPU時間を占有してしまうことがある。従来のWindowsでは、スレッドの優先度だけでCPU割り当てを行なっていたためだ。しかしWindows Server 2008 R2では、リモートデスクトップサービスの役割を追加するとDFSSが有効になり、CPUの割り当てメカニズムが変わる(レジストリを操作して無効にすることもできる)。
DFSSは、最初に1から9の重みをターミナルサービスの各セッションに割り当てる。既定値は5であり、内部APIを呼び出すことでアプリケーションごとに重みづけを変更することも可能となっている。
各セッションは、150ミリ秒を単位としたCPU時間が割り当てられる。実際に利用できるCPU時間は、全セッションの重みを各セッションの重みで比例配分したものである。たとえば、セッションAが重み5、Bが3、Cが2とすると、重みの合計は10になる。このとき、セッションAは5/10=50%、Bは3/10=30%、Cは2/10=20%の時間を利用できる。
既定ではすべてのセッションが5の重みを持つので、セッション単位でCPU時間が公平に分配される。
UMSとファイバー
スレッドは通常、ユーザーモードスレッドとカーネルモードスレッドがセットで生成される(図3)。一般的なアプリケーションはユーザーモードで実行されるが、システムサービスの呼び出しが行なわれると、カーネルモードに切り替わる。それぞれがセットで動作することで、ユーザースレッドはカーネルが使うデータ構造を正しく管理できる。
しかし、カーネルモードスレッドにもレジスターやスタックなど、独自のコンテキストがあるため、切り替えには多くのオーバーヘッドがある。もしカーネルのデータ構造を操作しないのであれば、カーネルスレッドは無駄だ。そこでWindows NT時代に実装されたのが、「ファイバー」である。ファイバーはユーザーモードスレッドに相当する機能しか持たないため、非常に軽量である。ファイバー(繊維)は、スレッド(糸)よりも細いわけだ。
ただし、ファイバー内でシステムサービスを呼び出すとカーネルが管理するデータと矛盾を起こすことがあるため、プログラマーの負担が大きいという問題があった。
この問題を解消するのが先にでたUMSで、スレッドをユーザーモード部とカーネルモード部に分離しつつ、必要に応じて連係を図る役割を持つ。そのため、特別な注意を払わなくても、カーネルのデータ構造は破壊されない。また、カーネル部分で待ち状態になった場合はスレッド全体を待機するのではなく、カーネルスレッドだけを待機させ、ユーザースレッドを切り替えることができるため性能も向上する(図4)。
UMSは、マイクロソフトの開発環境「Visual Studio 2010」の並列プログラミング用ライブラリ基盤「Concurrency Runtime(ConcRT)」の内部で使用される。そのため、ConcRTを使ったマルチスレッドアプリケーションは、自動的に性能が向上する。逆にいうと、従来のアプリケーションはその恩恵を受けることはできない。
ちなみに、現行のSQL Serverはファイバーを使った実装をしているようである。そこで、Windowsの開発チームがSQL Serverの開発チームに「次期バージョンではUMSを使ってみてはどうか」と提案したらしい。答は「今動いているのだから、すぐに変える必要はない」というものだったとか。
いくらすばらしい機能でも、実装にはそれなりの労力がかかるし、バグの混入もあり得る。「よい機能だからすぐに採用しましょう」といかないのは当然の話だ。UMSは既存のアプリケーションの書き変えではなく、新規開発システムから徐々に広まることになるだろう。
筆者紹介:横山哲也
グローバルナレッジネットワーク株式会社
マイクロソフト認定トレーナ/マイクロソフトMVP
1994年からSEおよびプログラマー向けにWindowsのサーバーの教育を担当。1996年、グローバルナレッジネットワーク設立とともに同社に移籍。2003年より「マイクロソフトMVP(Directory Services)」
本記事は、月刊アスキードットテクノロジーズ2009年12月号の特集2「Windows Server 2008 R2の強化点」を再編集し、Service Pack 1に関する情報を追加したものです。 |
初出時、「ユーザーモードスケジューリング」の略称「UMS」の表記を誤っている箇所がありました。お詫びし、訂正させていただきます。(2011年9月15日)
この連載の記事
-
第9回
ソフトウェア・仮想化
2008 R2で追加されたActive Directoryの新機能 -
第8回
ソフトウェア・仮想化
Windows Serverのブランチオフィスサポートの実力は? -
第7回
ソフトウェア・仮想化
R2とSP1の強化されたVDIで何ができる? -
第6回
ネットワーク
VMware対抗機能「ダイナミックメモリ」を搭載したHyper-V 2.0 -
第5回
ネットワーク
バージョンアップしたHyper-V 2.0の実力を知ろう -
第4回
ネットワーク
カーネル改良で省電力を追求したWindows Server 2008 R2 -
第2回
ネットワーク
R2の新カーネルは256コアもの大規模サーバーに対応 -
第1回
ソフトウェア・仮想化
Windows Server 2008 R2はなにが変わったのか -
ソフトウェア・仮想化
SP1までわかる!Windows Server 2008 R2入門<目次> - この連載の一覧へ