今回は、プロセスが使用するスケジューラを変更するコマンド dispadmin を
紹介します。
このコマンドはあまり馴染みがないかも知れませんが、Solaris コンテナで Zone
のリソース制御を行う時に重要なコマンドとなります。
Solaris コンテナ上の CPU リソース制御は、FSS(Fair Share Scheduler)を使用
しますが、Solaris 10 初期インストールの状態では、スケジューラが FSS を
デフォルトで使用する設定になっておりません。
その為、zonecfg コマンドで cpu-shares プロパティを設定した Zone を起動すると
下記ワーニングメッセージが出力されます。
(今回は、Solaris 10 10/09 で検証しております。)
# zoneadm -z zone01 boot
zoneadm: zone 'zone01': 警告: zone.cpu-shares 資源制御が設定されていますが、
zoneadm: zone 'zone01': FSS はこのゾーンのデフォルトのスケジューリングクラス
zoneadm: zone 'zone01': ではありません。FSS はゾーン内のプロセスに使用されますが、
zoneadm: zone 'zone01': FSS の利点を十分に得るために、FSS を
zoneadm: zone 'zone01': デフォルトのスケジューリングクラスにするようにしてください。
zoneadm: zone 'zone01': 詳細は、dispadmin(1M) を参照してください。
CPU リソース制御プロパティは、FSS の管理下で制御を行いますので、デフォルト
のスケジューリングクラスに FSS が設定されていないとワーニングが出てしまいます。
ワーニングメッセージを出さないよう FSS をデフォルトのスケジューリ
ングクラスに設定するには、下記設定を行います。
まずは、現在のデフォルトスケジューラを確認してみましょう。
# dispadmin -d
dispadmin: Default scheduling class is not set
Solaris 10 の初期インストール状態では、デフォルトスケジューラは何も設定
されていない事が確認できます。
それでは、デフォルトスケジューラを FSS に設定してみましょう。
# dispadmin -d FSS
これで設定が完了しました。
最後にデフォルトスケジューラに FSS が設定できたか確認してみましょう。
# dispadmin -d
FSS (Fair Share)
----
FSS の設定が完了しましたので、もう一度 Zone を起動してみます。
# zoneadm -z zone01 boot
zone01 起動時にワーニング出力が消えました。
ちなみに、dispadmin でデフォルトのスケジューラを設定すると、
下記内容のファイルが /etc/dispadmin.conf に作成されます。
# cat dispadmin.conf
#
# /etc/dispadmin.conf
#
# Do NOT edit this file by hand -- use dispadmin(1m) instead.
#
DEFAULT_SCHEDULER=FSS
Zone のリソース制御が思うように動作しない場合、一度 dispadmin
の設定を確認する事をお勧めします。
(参考情報)
過去の 「やっぱり Sun がスキ!」blog 記事一覧はこちらを参照下さい。
http://wikis.sun.com/display/yappri/Home