X

Oracle Solaris, Oarcle ハードウェア製品に関する情報

  • Sun
    April 21, 2010

Real Time スケジューラで動作する Zone の設定方法

Guest Author


前回、

Solaris ゾーン上の CPU リソースは FSS(Fair Share Scheduler) でスケジューリングされる

説明をしましたが、今回は、任意のゾーンに対するスケジューリング
クラスを FSS 以外に変更する方法を紹介します。



ゾーンのスケジューリングクラスをデフォルトの FSS から変更する為には、対象となる
ゾーンが使用する CPU プールの pool.scheduler プロパティーに有効なスケジューリング
クラスを設定します。



それでは早速、RT(Real Time Scheduler)で動作するゾーンを
作成してみましょう。具体的には、zonecfg の scheduling-class プロパティー
を使ってゾーンのスケジューリングクラスを設定します。



今回は、CPU プールを作成する手間を省く為、ゾーン起動時に自動でプールを
構成する dedicated-cpu プロパティをゾーンに設定しました。



下記の例は、ゾーン名 real-zone に、2 CPU 分の CPU プールを割り当て、
scheduling-class を RT で定義しております。


# zonecfg -z real-zone
real-zone: そのような構成済みゾーンはありません
'create' を使用して、新しいゾーンの構成を開始してください。
zonecfg:real-zone> create
zonecfg:real-zone> set zonepath=/export/zone/real-zone
zonecfg:real-zone> add dedicated-cpu
zonecfg:real-zone:dedicated-cpu> set ncpus=2
zonecfg:real-zone:dedicated-cpu> end
zonecfg:real-zone> set scheduling-class=RT
zonecfg:real-zone> verify
zonecfg:real-zone> commit
zonecfg:real-zone> exit
# zoneadm -z real-zone install
Preparing to install zone .
Creating list of files to copy from the global zone.
...
The file contains a log of the zone installation.
# zoneadm -z real-zone boot



これでゾーンのスケジューリングクラスを RT に設定したゾーンが作成できました。

現在、検証環境では、下記のように FSS で動作する zone01 と、RT で動作する real-zone が稼働しております。

# zoneadm list -cv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
1 zone01 running /export/zone/zone01 native shared
2 real-zone running /export/zone/real-zone native shared



poolstat コマンドで、プールの状態 (real-zone 用にプールが作成されている事) を
確認します。

# poolstat
pset
id pool size used load
1 SUNWtmp_real-zone 2 0.00 0.00
0 pool_default 2 0.00 0.00



次に、各ゾーン内で priocntl -d にて起動されるプロセスのスケジューリングクラス
を確認します。

zone01# priocntl -d
TIME SHARING PROCESSES:
PID TSUPRILIM TSUPRI
6487 0 0
real-zone# priocntl -d
REAL TIME PROCESSES:
PID RTPRI TQNTM TQSIG
6484 0 1000 0



今度は実際に各ゾーンに負荷をかけ、起動するプロセス
のスケジューリングクラスを確認してみます。

今回、zone01 と real-zone それぞれで CPU に負荷を
かける

nspin

を実行した結果が下記となります。

zone01 では、PID 6522 と 6523、real-zone では、PID 6524 と 6525 が
起動しております。


# ps -efl -o pid,zone,comm | grep nspinx の結果6523   zone01  ./nspinx6522   zone01  ./nspinx6524 real-zone ./nspinx6525 real-zone ./nspinx



prstat -z の結果より、PRI を確認すると、real-zone で実行しているプロセスの
PRI が 60 より大きいので、RT でスケジューリングされている事が確認できます。



prstat -z の結果
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP6525 root     1344K  540K cpu0   100    -   0:01:53  25% nspinx/16524 root     1344K  672K cpu1   100    -   0:01:53  25% nspinx/16522 root     1344K  672K cpu3    20    0   0:01:57  25% nspinx/16523 root     1344K  540K run     20    0   0:01:57  25% nspinx/1
....
....
ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE
2 14 17M 20M 0.2% 0:03:59 50% real-zone
1 14 22M 25M 0.3% 0:03:58 50% zone01
0 52 173M 256M 3.2% 0:01:13 0.0% global
Total: 80 processes, 312 lwps, load averages: 4.92, 5.53, 2.86



ご参考で、各スケジューリングクラスに割り当たる PRI 番号は下記コマンドで
確認できます。


# priocntl -l
CONFIGURED CLASSES
==================
SYS (System Class)
TS (Time Sharing)
Configured TS User Priority Range: -60 through 60
FX (Fixed priority)
Configured FX User Priority Range: 0 through 60
IA (Interactive)
Configured IA User Priority Range: -60 through 60
FSS (Fair Share)
Configured FSS User Priority Range: -60 through 60
RT (Real Time)
Maximum Configured RT Priority: 59





(補足情報)

今回、Real Time スケジューラで動作するゾーンを紹介しましたが、Real Time スケジューラで
動作するゾーンでは、FSS 制御下で動作するプロパティ( cpu-share や capped-cpu ) が制御
できませんので設計時に注意が必要です。




(参考資料)

ゾーンのスケジューリングクラス


http://docs.sun.com/app/docs/doc/819-0385/gepst?l=ja&a=view







(参考情報)

過去の 「やっぱり Sun がスキ!」blog 記事一覧はこちらを参照下さい。

http://wikis.sun.com/display/yappri/Home

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.