実はユーザーが変更できる
スケジューリングのパラメーター
スケジューリングのパラメーターは、前述のShortとLongというQuantumの割り当て単位と、Quantum Boostの有無などがある。この設定は以下のレジストリの値で決まる。逆に言えば、この値を書き換えるとスケジューリングの間隔を変えられるわけだ(レジストリを変更するので、間違えばOSが正常に動作しなくなる可能性もある)。
- HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control
¥PriorityControl¥Win32PrioritySeparation
この値にはDWORD値を設定する。値は以下のようなビットフィールドで構成されている。それぞれ2bitなので、値の範囲は0~3となる。
- bit 0~1 Long/Short
- bit 2~3 Variable/Fixed
- bit 4~5 QuantumBoost
「Long/Short」は、Quantumの基本割り当て値がLong(設定値は1)、Short(設定値は2)なのかを表し、「0」または「3」はシステムのデフォルト値と解釈される。「Variable/Fixed」は、Quantum Boostを使うかどうかを決める。「1」ならば使うで「2」ならば使わないことを意味し、「0」と「3」はデフォルト値となる。
「QuantumBoost」は、フォアグラウンドプロセスに割り当てるQuantum値の“倍率”を意味する。「0」ならば1倍で「1」なら2倍、「2」なら3倍である(「3」は2と同じ)。なお「Variable/Fixed」がFixedの場合には、ここに何を指定しても「Long/Short」の設定のままとなる。
このレジストリの設定と同じ効果があるのが、コントロールパネルのシステム設定にある「システムの詳細設定」だ。「詳細設定」タブから「パフォーマンス」の設定ボタンを押して、「詳細設定」にある「プロセッサーのスケジュール」がそれに当たる。
ここには「プログラム」と「バックグラウンドサービス」の2つの設定があるが、前者は「Short-Variable-3倍」(クライアント版Windowsのデフォルト値)を設定するもので、後者は「Long-Fixed」(サーバー版のデフォルト値)を意味する。
通常はこの項目を変更する必要などまずないが、例えばクライアント版のWindowsをファイルサーバーやプリンタサーバーとして使うという場合は、「バックグラウンドサービス」側に設定してもいいかもしれない。
この連載の記事
-
第13回
PC
ARM版Windows 8実現の布石となったWindows 7の「MinWin」 -
第12回
PC
アプリがWindowsの機能を使うには? APIとDLLの仕組み -
第10回
PC
AMD FX向けにパッチで修正 スケジューラーが抱える難題 -
第9回
PC
マルチコアCPUを賢く使いこなす スケジューリングの秘密 -
第8回
PC
意味の違いがわかる? タスクとプロセスとスレッド -
第7回
PC
Windowsのメモリー管理をx86の仕組みから読み解く -
第6回
PC
メモリー不足を根本的に解決する64bit OSの仕組み -
第5回
PC
Windows 8でMetro Styleアプリを動かす「WinRT」 -
第4回
PC
Windowsを動かすデバイスドライバーの仕組み 前編 -
第3回
PC
OSの仕事はハードウェアをアプリから「隠す」こと? - この連載の一覧へ