Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

資源制御値に対応付けられた大域アクションと局所アクション

資源制御値に対応付けられるアクションには 、2 種類あります。 大域アクションと局所アクションです。

資源制御値に対応付けられた大域アクション

大域アクションは、システム上のすべての資源制御の資源制御値に適用されます。rctladm コマンド (rctladm(1M) のマニュアルページを参照) を使用すると、次の動作を実行できます。

資源制御に対応付けられた大域ログ作成アクションは、無効にしたり有効にしたりできます。syslog アクションの程度を設定するには、重要度を syslog=level のように割り当てます。level に設定できる値は次のとおりです。

デフォルトでは、資源制御の違反は大域ログ作成では記録されません。Solaris 10 5/08 リリースでは、大域アクションを構成できない資源制御に対して、レベル n/a が追加されました。

資源制御値に対応付けられた局所アクション

局所アクションは、制御値を超えようとしているプロセスに対して実行されます。資源制御に設定された各しきい値に対して、1 つ以上のアクションを対応付けることができます。局所アクションには、3 つの種類があります。 nonedeny、および signal= です。これら 3 つのアクションは、次のように使用されます。

none

しきい値を超える量の資源要求に対して、何のアクションも行いません。このアクションは、アプリケーションの進行に影響を与えることなく、資源の使用状況を監視するのに役立ちます。プロセスが資源制御のしきい値を超えたときに大域メッセージを表示することもできます。ただし、このアクションによってプロセスが影響を受けることはありません。

deny

しきい値を超える量の資源要求を拒否できます。たとえば、task.max-lwps 資源制御に deny アクションが指定されている場合、制御値を超えるような新しいプロセスを作成する fork システムコールは失敗します。fork(2) のマニュアルページを参照してください。

signal=

資源制御値を超えたときに大域シグナルメッセージを送信するアクションを有効にすることができます。プロセスがしきい値を超えると、プロセスにシグナルが送信されます。プロセスがさらに資源を消費しても、追加のシグナルが送信されることはありません。使用できるシグナルの一覧については、表 6–3 を参照してください。

すべての資源制御にすべてのアクションを適用できるわけではありません。たとえば、プロセスは、その所属先のプロジェクトに割り当てられている CPU 配分を超えることはできません。したがって、project.cpu-shares 資源制御に deny アクションを適用することはできません。

実装上の制限により、しきい値に設定できるアクションは、各制御の大域プロパティーによって制限されます。rctladm(1M) のマニュアルページを参照してください。次の表に、使用できるシグナルアクションを示します。シグナルの詳細については、signal(3HEAD) のマニュアルページを参照してください。

表 6–3 資源制御値に使用できるシグナル

シグナル 

説明 

注釈 

SIGABRT 

プロセスを終了します。 

 

SIGHUP 

ハングアップシグナルを送信します。開いた回線上でキャリアが検出されなくなったときに発生します。シグナルは、端末を制御しているプロセスグループに送信されます。 

 

SIGTERM 

プロセスを終了します。ソフトウェアによって送信される終了シグナルです。 

 

SIGKILL 

プロセスを終了し、プログラムを強制終了します。 

 

SIGSTOP 

プロセスを停止します。ジョブ制御シグナルです。 

 

SIGXRES 

資源制御の制限超過です。資源制御機能によって生成されます。 

 

SIGXFSZ 

プロセスを終了します。ファイルサイズの制限超過です。 

RCTL_GLOBAL_FILE_SIZE プロパティー (process.max-file-size) を持つ資源制御だけで使用可能です。詳細は、rctlblk_set_value(3C) のマニュアルページを参照してください。

SIGXCPU 

プロセスを終了します。CPU 時間の制限超過です。 

RCTL_GLOBAL_CPUTIME プロパティー (process.max-cpu-time) を持つ資源制御だけで使用可能です。詳細は、rctlblk_set_value(3C) のマニュアルページを参照してください。