第 4 章拡張アカウンティング (概要)で説明したようにシステム上の作業負荷の資源消費を判定したら、資源の使用方法に制限を設けることができます。制限を設けると、作業負荷による資源の過剰消費を防ぐことができます。「資源制御」機能は、この目的に使用される制約機構です。
この章の内容は次のとおりです。
資源制御を管理する方法については、第 7 章資源制御の管理 (手順)を参照してください。
System V プロセス間通信 (IPC) の /etc/system 調整可能パラメータが、次の一連の資源制御で置き換えられています。
project.max-shm-ids
project.max-msg-ids
project.max-sem-ids
project.max-shm-memory
process.max-sem-nsems
process.max-sem-ops
process.max-msg-qbytes
次のイベントポート資源制御が追加されています。
project.max-device-locked-memory
project.max-port-ids
process.max-port-events
次の暗号化資源制御が追加されています。
project.max-crypto-memory
その他、次の資源制御が追加されています。
project.max-lwps
project.max-tasks
project.max-contracts
詳細は、「使用可能な資源制御」を参照してください。
Solaris 10 の新機能の全一覧および Solaris リリースについての説明は、『Oracle Solaris 10 9/10 の新機能』を参照してください。
Solaris オペレーティングシステムでは、プロセスごとの資源制限という概念が、第 2 章プロジェクトとタスク (概要)で説明したタスクおよびプロジェクトのエンティティーに拡張されています。この拡張機能は、資源制御 (rctls) 機能によって提供されます。また、割り当ては /etc/system 調整可能パラメータを通して設定していましたが、これも資源制御機構を通して自動的に行われるか、手動で構成するようになりました。
資源制御には、接頭辞 zone、project、task、または process が付きます。資源制御はシステム全体に適用できます。動作中のシステム上の資源制御値を更新できます。
このリリースで使用できる標準の資源制御のリストについては、「使用可能な資源制御」を参照してください。ゾーンごとに使用可能な資源制御については、「資源タイプのプロパティー」を参照してください。
このリリースで使用できる標準の資源制御のリストについては、「使用可能な資源制御」を参照してください。
従来から、UNIX システムには資源制限機能があります (rlimit)。rlimit の機能を使用すると、管理者は、プロセスが消費できる資源の量に対して 1 つ以上の数値制限を設定できます。この制限には、プロセスごとの CPU 使用時間、プロセスごとのコアファイルサイズ、プロセスごとの最大ヒープサイズが含まれます。「ヒープサイズ」は、プロセスのデータセグメントに割り当てられるスクラッチメモリー領域のサイズです。
資源制御機能は、資源制限機能に対する互換性インタフェースを提供します。資源制限機能を使用する既存のアプリケーションは、変更せずに、引き続き使用できます。また、既存のアプリケーションは、資源制御機能を利用するように変更されたアプリケーションと同様に監視することができます。
プロセスは、数種類のプロセス間通信 (IPC) の 1 つを使用して、互いに通信できます。IPC を使用すると、プロセス間で情報の転送や同期化を行うことができます。Solaris 10 リリースの前は、/etc/system ファイルにエントリを追加することで、IPC 調整可能パラメータを設定していました。今後は、資源制御機能により、カーネルの IPC 機能の動作を定義する資源制御が提供されるようになりました。これらの資源制御は、/etc/system の調整可能パラメータを置換します。
古いパラメータが、Solaris システムの /etc/system ファイルに入っていることがあります。その場合、これらのパラメータは、以前の Solaris リリースの場合と同様に、デフォルトの資源制御値の初期化に使用されます。ただし、古いパラメータはできるだけ使用しないでください。
どの IPC オブジェクトがプロジェクトの使用状況に影響を与えているかを監視するには、ipcs コマンドに -J オプションを付けて実行します。表示例については、「ipcs を使用する方法」を参照してください。ipcs コマンドの詳細については、ipcs(1) のマニュアルページを参照してください。
Solaris システムの調整については、『Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル』を参照してください。
資源制御機能は、システム資源に対する制約機構を提供します。これにより、プロセス、タスク、プロジェクト、およびゾーンが、指定したシステム資源を過剰消費することを防止できます。この機構は、資源の過剰消費を防ぐことにより、より管理しやすいシステムを実現します。
制約機構は、容量計画を実施するときにも使用できます。制約を設けることにより、アプリケーションへの資源の提供を必ずしも拒否することなく、アプリケーションが必要とする資源量に関する情報を取得できます。
また、資源制御は、資源管理機能のための簡単な属性機構としても利用できます。たとえば、公平配分スケジューラ (FSS) のスケジューリングクラスで動作しているプロジェクトで利用できる CPU の配分は、資源制御 project.cpu-shares によって定義されます。プロジェクトは資源制御によって一定の配分を割り当てられるため、制御の超過につながる各種のアクションは許可されません。そのため、資源制御 project.cpu-shares の現在値は、指定したプロジェクトの属性とみなすことができます。
また、プロジェクト内のプロセスの集合が消費する物理メモリーを規制するには、別の種類のプロジェクト属性が使用されます。これらの属性には、接頭辞 rcap が付きます (たとえば、rcap.max-rss)。資源制御と同様に、この種類の属性も project データベース中に構成します。資源制御はカーネルによって同期的に実行されますが、物理メモリーの資源上限の制限は資源上限デーモン rcapd によってユーザーレベルで非同期的に強制実行されます。rcapd については、第 10 章資源上限デーモンによる物理メモリーの制御 (概要)および rcapd(1M) のマニュアルページを参照してください。
project.pool 属性は、プロジェクトのプールの結合を指定するために使用されます。資源プールの詳細については、第 12 章資源プール (概要)を参照してください。
資源制御機能は、project データベースによって構成されます。第 2 章プロジェクトとタスク (概要)を参照してください。資源制御とその他の属性は、project データベースエントリの最後のフィールドで設定します。各資源制御に対応付けられる値は、括弧で囲まれ、コンマ区切りのプレーンテキストとして示されます。括弧内の値によって「アクション文節」が構成されます。各アクション文節には、値として特権レベル、しきい値、および特定のしきい値に対応付けられたアクションが含まれます。各資源制御は複数のアクション文節を持つことができ、各アクション文節もコンマで区切られます。次のエントリは、プロジェクトエンティティーにおけるタスクごとの軽量プロセス (LWP) 制限と、プロセスごとの最長 CPU 時間制限を定義します。process.max-cpu-time は、プロセスの実行時間が合計で 1 時間になるとプロセスに SIGTERM を送信し、1 時間 1 分になると SIGKILL を送信します。表 6–3 を参照してください。
development:101:Developers:::task.max-lwps=(privileged,10,deny); process.max-cpu-time=(basic,3600,signal=TERM),(priv,3660,signal=KILL) typed as one line |
ゾーンが有効になっているシステムの場合、ゾーン規模の資源制御はゾーン構成で指定されます。その形式は多少異なります。詳細は、「ゾーン構成データ」を参照してください。
rctladm コマンドを使用すると、資源制御機能の実行時に問い合わせや制御機能の変更を「大域有効範囲」で行うことができます。prctl コマンドを使用すると、実行時に資源制御機能の問い合わせや変更を「局所有効範囲」で行うことができます。
詳細については、「資源制御値に対応付けられた大域アクションと局所アクション」、および rctladm(1M) と prctl(1) のマニュアルページを参照してください。
ゾーンがインストールされているシステムでは、非大域ゾーンで rctladm を使用して設定を変更することはできません。各資源制御の大域ログ状態を表示する場合に、非大域ゾーンで rctladm を使用します。
次の表に、このリリースで使用できる標準の資源制御を示します。
この表では、各制御によって制約される資源について説明し、project データベースにおけるその資源のデフォルトの単位を示します。デフォルトの単位には次の 2 種類があります。
数量は制限される量を意味します。
インデックスは最大有効識別子を意味します。
したがって、project.cpu-shares は、プロジェクトで使用することが許可されている配分を示します。一方、process.max-file-descriptor は、open(2) システムコールによってプロセスに割り当てることができる最大ファイル番号を指定します。
表 6–1 標準の資源制御
制御名 |
説明 |
デフォルトの単位 |
---|---|---|
project.cpu-cap |
Solaris 10 8/07: 1 つのプロジェクトで消費可能な CPU 資源量に対する絶対的な制限。project.cpu-cap 設定と同様、100 の値は 1 つの CPU の 100% を意味します。125 の値は 125% になります。CPU キャップの使用時は、100% がシステム上の 1 つの CPU の上限となります。 |
数量 (CPU の数) |
project.cpu-shares |
このプロジェクトに対して、公平配分スケジューラ (FSS(7) のマニュアルページを参照) で使用することが許可されている CPU 配分。 |
数量 (配分) |
project.max-crypto-memory |
ハードウェアによる暗号化処理の高速化のために libpkcs11 が使用できるカーネルメモリーの合計量。カーネルバッファーおよびセッション関連の構造体の割り当ては、この資源制御に対してチャージされます。 |
サイズ (バイト) |
project.max-locked-memory |
ロックされる物理メモリーの許容合計量。 priv_proc_lock_memory がユーザーに割り当てられている場合、そのユーザーがすべてのメモリーをロックするのを防ぐため、この資源制御の設定も検討してください。 Solaris 10 8/07: Solaris 10 8/07 リリースでは、project.max-device-locked-memory は削除され、この資源制御で置き換えられました。 |
サイズ (バイト) |
project.max-port-ids |
イベントポートの許容最大数。 |
数量 (イベントポート数) |
project.max-sem-ids |
このプロジェクトに許容されるセマフォー ID の最大数。 |
数量 (セマフォー ID の数) |
project.max-shm-ids |
このプロジェクトに許容される共有メモリー ID の最大数。 |
数量 (共有メモリー ID の数) |
project.max-msg-ids |
このプロジェクトに許容されるメッセージキュー ID の最大数。 |
数量 (メッセージキュー ID の数) |
project.max-shm-memory |
このプロジェクトに許容される System V 共有メモリーの合計量。 |
サイズ (バイト) |
project.max-lwps |
このプロジェクトで同時に使用できる LWP の最大数。 |
数量 (LWP 数) |
project.max-tasks |
このプロジェクトに許容されるタスクの最大数 |
数量 (タスク数) |
project.max-contracts |
このプロジェクトに許容される契約の最大数 |
数量 (契約数) |
task.max-cpu-time |
このタスクのプロセスで使用できる最長 CPU 時間。 |
時間 (秒) |
task.max-lwps |
このタスクのプロセスで同時に使用できる LWP の最大数。 |
数量 (LWP 数) |
process.max-cpu-time |
このプロセスで使用できる最長 CPU 時間。 |
時間 (秒) |
process.max-file-descriptor |
このプロセスで使用できる最大のファイル記述子インデックス。 |
インデックス (最大ファイル記述子) |
process.max-file-size |
このプロセスの書き込みに使用できる最大ファイルオフセット。 |
サイズ (バイト) |
process.max-core-size |
このプロセスによって作成されるコアファイルの最大サイズ。 |
サイズ (バイト) |
process.max-data-size |
このプロセスで使用できるヒープメモリーの最大サイズ。 |
サイズ (バイト) |
process.max-stack-size |
このプロセスに使用できる最大スタックメモリーセグメント。 |
サイズ (バイト) |
process.max-address-space |
このプロセスで使用できる、セグメントサイズの総計としての最大アドレス空間。 |
サイズ (バイト) |
process.max-port-events |
イベントポートあたりに許容されるイベントの最大数。 |
数量 (イベント数) |
process.max-sem-nsems |
セマフォーセットあたりに許容されるセマフォーの最大数。 |
数量 (セットあたりのセマフォー数) |
process.max-sem-ops |
1 回の semop コールに許容されるセマフォー操作の最大数 (semget() のコール時に資源制御からコピーされる値)。 |
数量 (操作の数) |
process.max-msg-qbytes |
メッセージキュー内のメッセージの最大バイト数 (msgget() のコール時に資源制御からコピーされる値)。 |
サイズ (バイト) |
process.max-msg-messages |
メッセージキュー内のメッセージの最大数 (msgget() のコール時に資源制御からコピーされる値)。 |
数量 (メッセージ数) |
資源制御の設定や変更がまったく行われていないシステム上では、資源制御のデフォルト値を表示できます。そのようなシステムでは、/etc/system や project データベースにデフォルト以外のエントリが含まれていません。値を表示するには、prctl コマンドを使用します。
ゾーン規模の資源制御は、ゾーン内のすべてのプロセスエンティティーによる総資源消費を制限します。ゾーン規模の資源制御は、グローバルプロパティー名を使用して設定することもできます。詳細は、「ゾーン規模の資源制御の設定」および 「ゾーンの構成方法」を参照してください。
表 6–2 ゾーン規模の資源制御
制御名 |
説明 |
デフォルトの単位 |
---|---|---|
zone.cpu-cap |
Solaris 10 5/08: 1 つの非大域ゾーンで消費可能な CPU 資源量に対する絶対的な制限。project.cpu-cap 設定と同様、100 の値は 1 つの CPU の 100% を意味します。125 の値は 125% になります。CPU キャップの使用時は、100% がシステム上の 1 つの CPU の上限となります。 |
数量 (CPU の数) |
zone.cpu-shares |
このゾーンに対する公平配分スケジューラ (FSS) の CPU 配分 |
数量 (配分) |
zone.max-locked-memory |
ゾーンで使用できるロックされた物理メモリーの合計量。 priv_proc_lock_memory がゾーンに割り当てられている場合、そのゾーンがすべてのメモリーをロックするのを防ぐため、この資源制御の設定も検討してください。 |
サイズ (バイト) |
zone.max-lwps |
このゾーンで同時に使用できる LWP の最大数 |
数量 (LWP 数) |
zone.max-msg-ids |
このゾーンに許容されるメッセージキュー ID の最大数 |
数量 (メッセージキュー ID の数) |
zone.max-sem-ids |
このゾーンに許容されるセマフォー ID の最大数 |
数量 (セマフォー ID の数) |
zone.max-shm-ids |
このゾーンに許容される共有メモリー ID の最大数 |
数量 (共有メモリー ID の数) |
zone.max-shm-memory |
このゾーンに許容される System V 共有メモリーの合計量 |
サイズ (バイト) |
zone.max-swap |
このゾーンのユーザープロセスのアドレス空間マッピングと tmpfs マウントで消費できるスワップの合計量。 |
サイズ (バイト) |
ゾーン規模の資源制御の構成方法については、「資源タイプのプロパティー」および 「ゾーンの構成方法」を参照してください。lx ブランドゾーンでゾーン規模の資源制御を使用する方法については、「lx ブランドゾーンを構成、検証、および確定する方法」を参照してください。
ゾーン規模の資源制御を大域ゾーンに適用することも可能です。詳細は、第 17 章非大域ゾーンの構成 (概要)および 「ゾーンがインストールされている Solaris システムでの公平配分スケジューラの使用」を参照してください。
資源制御の種類を示す大域フラグは、すべての資源制御に対して定義されます。これらのフラグは、種類に関する基本情報を prctl などのアプリケーションに伝えるために、システムによって使用されます。アプリケーションはこの情報を使用して、次の内容を判定します。
各資源制御に適した単位の文字列
倍率値を解釈するときに使用する正しい倍率
次の大域フラグを使用できます。
大域フラグ |
資源制御の種類ごとの文字列 |
修飾子 |
倍率 |
---|---|---|---|
RCTL_GLOBAL_BYTES |
バイト |
B |
1 |
|
KB |
210 |
|
|
MB |
220 |
|
|
GB |
230 |
|
|
TB |
240 |
|
|
PB |
250 |
|
|
EB |
260 |
|
RCTL_GLOBAL_SECONDS |
秒 |
s |
1 |
|
Ks |
103 |
|
|
Ms |
106 |
|
|
Gs |
109 |
|
|
Ts |
1012 |
|
|
Ps |
1015 |
|
|
Es |
1018 |
|
RCTL_GLOBAL_COUNT |
数 |
なし |
1 |
|
K |
103 |
|
|
M |
106 |
|
|
G |
109 |
|
|
T |
1012 |
|
|
P |
1015 |
|
|
E |
1018 |
資源制御に倍率値を使用できます。次の例は、倍率付きのしきい値を示します。
task.max-lwps=(priv,1K,deny)
単位修飾子は、prctl、projadd、および projmod コマンドに使用できます。project データベース自体で単位修飾子を使用することはできません。
資源制御のしきい値は、局所アクションのトリガーやログ作成などの大域アクションの発生が可能である実行ポイントを設定します。
資源制御の各しきい値は、特権レベルに対応付ける必要があります。次の 3 種類の特権レベルのいずれかを使用します。
基本値 — 呼び出し元プロセスの所有者が変更できます
特権値 — 特権を持っている呼び出し元 (スーパーユーザー) だけが変更できます
システム値 — オペレーティングシステムによる処理が実行されている間は、固定されます
資源制御は、システムまたは資源の提供者によって定義されるシステム値を 1 つ持つことが保証されます。システム値は、オペレーティングシステムが提供できる資源の量を意味します。
特権値はいくつでも定義できます。基本値は 1 つだけ許可されます。特権値を指定しないで実行される操作には、デフォルトで、基本レベルの特権が割り当てられます。
資源制御値の特権レベルは、資源制御ブロックの特権フィールドで、RCTL_BASIC、RCTL_PRIVILEGED、または RCTL_SYSTEM のように定義します。詳細は、setrctl(2) のマニュアルページを参照してください。prctl コマンドを使用すると、基本レベルおよび特権レベルに対応付けられている値を変更できます。
資源制御値に対応付けられるアクションには 、2 種類あります。 大域アクションと局所アクションです。
大域アクションは、システム上のすべての資源制御の資源制御値に適用されます。rctladm コマンド (rctladm(1M) のマニュアルページを参照) を使用すると、次の動作を実行できます。
アクティブなシステム資源制御の大域的状態を表示します
大域ログ作成アクションを設定します
資源制御に対応付けられた大域ログ作成アクションは、無効にしたり有効にしたりできます。syslog アクションの程度を設定するには、重要度を syslog=level のように割り当てます。level に設定できる値は次のとおりです。
debug
info
notice
warning
err
crit
alert
emerg
デフォルトでは、資源制御の違反は大域ログ作成では記録されません。Solaris 10 5/08 リリースでは、大域アクションを構成できない資源制御に対して、レベル n/a が追加されました。
局所アクションは、制御値を超えようとしているプロセスに対して実行されます。資源制御に設定された各しきい値に対して、1 つ以上のアクションを対応付けることができます。局所アクションには、3 つの種類があります。 none、deny、および signal= です。これら 3 つのアクションは、次のように使用されます。
しきい値を超える量の資源要求に対して、何のアクションも行いません。このアクションは、アプリケーションの進行に影響を与えることなく、資源の使用状況を監視するのに役立ちます。プロセスが資源制御のしきい値を超えたときに大域メッセージを表示することもできます。ただし、このアクションによってプロセスが影響を受けることはありません。
しきい値を超える量の資源要求を拒否できます。たとえば、task.max-lwps 資源制御に deny アクションが指定されている場合、制御値を超えるような新しいプロセスを作成する fork システムコールは失敗します。fork(2) のマニュアルページを参照してください。
資源制御値を超えたときに大域シグナルメッセージを送信するアクションを有効にすることができます。プロセスがしきい値を超えると、プロセスにシグナルが送信されます。プロセスがさらに資源を消費しても、追加のシグナルが送信されることはありません。使用できるシグナルの一覧については、表 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) のマニュアルページを参照してください。 |
システム上の資源制御には、それぞれ特定のプロパティーセットが対応付けられています。このプロパティーセットは、一連のフラグとして定義されます。これらのフラグは、その資源が制御されているすべてのインスタンスに対応付けられます。大域フラグは変更できませんが、rctladm または getrctl システムコールを使って取得できます。
ローカルフラグは、特定のプロセスまたはプロセス集合に対する資源制御の特定のしきい値について、デフォルトの動作と構成を定義します。あるしきい値のローカルフラグが、同じ資源制御で定義されている別のしきい値の動作に影響することはありません。ただし、大域フラグは、特定の制御に対応付けられているすべての値の動作に影響します。ローカルフラグは、対応する大域フラグによる制約の範囲内で、prctl コマンドまたは setrctl システムコールを使って変更できます。setrctl(2) のマニュアルページを参照してください。
ローカルフラグ、大域フラグ、およびそれらの定義の詳細な一覧については、rctlblk_set_value(3C) のマニュアルページを参照してください。
特定の資源制御がしきい値に達したときのシステムの動作を確認するには、rctladm を使ってその資源制御の大域フラグを表示します。たとえば、process.max-cpu-time の値を表示するには、次のように入力します。
$ rctladm process.max-cpu-time process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ] |
大域フラグは、次のことを示します。
この制御の特権値を下げるのに、スーパーユーザー特権を必要としません。
しきい値を超えても、資源へのアクセスは拒否されません。
資源がしきい値に達したとき、SIGXCPU を送信できます。
資源制御の時間。
特権タイプ basic を持つ資源制御値を設定できません。特権付き資源制御値だけが許可されます。
資源制御値に対してローカルのシグナルアクションを設定できません。
この資源制御に対して大域の syslog メッセージアクションを設定できません。
しきい値を超えたときに、必ず資源の要求を拒否します。
資源制御のカウント (整数) 値。
資源制御のサイズの単位。
資源制御のローカル値とアクションを表示するには、prctl コマンドを使用します。
$ prctl -n process.max-cpu-time $$ process 353939: -ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT process.max-cpu-time privileged 18.4Es inf signal=XCPU - system 18.4Es inf none |
この例では、2 つのしきい値の両方に max (RCTL_LOCAL_MAXIMAL) フラグが設定されており、資源制御には inf (RCTL_GLOBAL_INFINITE) フラグが設定されています。inf の値は無限大です。この値は制限を与えません。したがって、設定されているように、両方のしきい値は無限大値を意味し、これらの値を上回ることはありません。
1 つの資源には、複数の資源制御を設定できます。資源制御は、プロセスモデルの包含レベルごとに 1 つずつ設定できます。同じ資源上の異なるコンテナレベルで資源制御がアクティブな場合、まず、もっとも小さいコンテナの制御が実行されます。したがって、process.max-cpu-time と task.max-cpu-time の両方の制御が同時に検出された場合は、まず process.max-cpu-time に対するアクションが実行されます。
プロセスの資源消費が不明な場合がよくあります。資源消費に関する詳細な情報を入手するには、rctladm コマンドで利用できる大域資源制御アクションを使用してみてください。rctladm を使用して、資源制御に syslog アクションを設定します。その資源制御が管理するエンティティーでしきい値が検出されると、設定したログレベルでシステムメッセージが記録されます。詳細は、第 7 章資源制御の管理 (手順)および rctladm(1M) のマニュアルページを参照してください。
表 6–1 に示されている各資源制御をプロジェクトに割り当てることができるのは、ログイン時、newtask または su が呼び出されたとき、あるいは、at、batch、cron など、プロジェクトを扱うことができる起動ツールが呼び出されたときです。開始される各コマンドは、呼び出し側のユーザーのデフォルトプロジェクトとは異なるタスクで起動されます。詳細は、login(1)、newtask(1)、at(1)、cron(1M)、および su(1M) のマニュアルページを参照してください。
project データベース内のエントリに対する更新は、/etc/project ファイルまたはネットワークネームサービスのデータベース表現のどちらに対するものであっても、現在アクティブなプロジェクトには適用されません。更新内容は、新しいタスクがログインまたは newtask によってプロジェクトに参加したときに適用されます。
project データベースで変更された値は、プロジェクト内で開始される新しいタスクに対してだけ有効になります。ただし、rctladm および prctl コマンドを使用すると、動作中のシステムの資源制御を更新できます。
rctladm コマンドは、システム全体で、各資源制御の大域ログ状態に影響を与えます。このコマンドは、大域的状態を表示し、制御の限度を超えたときに syslog が記録するログのレベルを設定できます。
prctl コマンドを使用すると、プロセスごと、タスクごと、またはプロジェクトごとに資源制御値とアクションを表示したり、一時的に変更したりできます。プロジェクト ID、タスク ID、またはプロセス ID を入力として指定すると、このコマンドは、制御が定義されているレベルで資源制御に対して動作します。
変更した値とアクションはすぐに適用されます。ただし、これらの変更が適用されるのは、現在のプロセス、タスク、またはプロジェクトだけです。変更内容は、project データベースには記録されません。システムを再起動すると、変更内容は失われます。資源制御を永続的に変更するには、project データベースで変更を行う必要があります。
project データベースで変更できる資源制御設定はすべて、prctl コマンドでも変更できます。基本値と特権値はどちらも、追加、削除が可能です。またそれらのアクションも変更できます。デフォルトでは、基本レベルの資源制御はすべての操作の影響を受けます。スーパーユーザー特権があるプロセスとユーザーは、特権レベルの資源制御も変更できます。システム資源の制御は変更できません。
コマンド |
説明 |
---|---|
このコマンドを使用すると、どの IPC オブジェクトがプロジェクトの使用状況に影響を与えているかを監視できます |
|
このコマンドを使用すると、資源制御機能の実行時に問い合わせや資源制御機能の変更をローカルに行うことができます |
|
このコマンドを使用すると、資源制御機能の実行時に問い合わせや資源制御機能の変更を大域的に行うことができます |
resource_controls(5) のマニュアルページでは、単位や倍率なども含め、プロジェクトデータベース経由で使用可能な資源制御について説明しています。