EN JA
RCTL(8)
RCTL(8) FreeBSD System Manager's Manual RCTL(8)

名称

rctlリソース制限データベースを表示する、更新する

書式

rctl [ -h][ -n][ filter]

rctl -a [ rule]

rctl [ -h][ -n] -l [ filter]

rctl -r [ filter]

rctl [ -h] -u [ filter]

解説

オプションなしで呼び出されるとき、 rctl コマンドは、現在定義された RCTL 規則を標準出力に書き込みます。

filter 引数が指定されるなら、フィルタにマッチしている規則だけが表示されます。オプションは、次の通りです:

-a rule
RCTL データベースに rule を追加します。
-l filter
filter によって定義されたプロセスに適切な規則を表示します。単にプロセスのそれと等しい主題がある規則のみならず、あらゆるオプションなしで呼び出されたとき、これは、規則を示すこととは異なりますが、プロセスに適用可能なユーザ、jail とログインクラスのための規則であることに注意してください。
-r filter
RCTL データベースから filter にマッチする規則を削除します。
-u filter
filter にマッチする主題 (プロセス、ユーザ、ログインクラスまたは jail) に対してリソースの使用量を表示します。
-h
"人間に読み込み可能な"出力。単位の接尾辞を使用します: バイト、キロバイト、メガバイト、ギガバイト、テラバイトとペタバイト。
-n
ユーザ ID をユーザ名に変換するのではなく数値のユーザ ID を表示します。

規則構文

規則のための構文は、subject:subject-id:resource:action=amount/per です。

subject は、規則が適用される実体の種類を定義します。プロセス、ユーザ、ログインクラス、または jail を指定できます。

subject-id は、主題を識別します。プロセス ID、ユーザ名、数字のユーザ ID、ログインクラス名、または jail 名を指定できます。

resource は、規則が制御するリソースを識別します。

action は、プロセスが許容量を超えているとき、何が起こるかを定義します。

amount は、定義されたアクションがトリガされる前に、マッチするリソースをプロセスがどのくらい使用できるかを定義します。

per フィールドは、占めている amount がどのような実体を取得するかを定義します。例えば、規則 "loginclass:users:vmem:deny=100M/process"は、ログインクラス "users"に属するユーザの各プロセスが最大 100MB の仮想メモリを割り付けることを意味します。規則 "loginclass:users:vmem:deny=100M/user"は、ログインクラス "users"に属する各ユーザについて、そのユーザのすべてのプロセスによって割り付けられた仮想メモリの合計が 100MB を超えないことを意味します。規則 "loginclass:users:vmem:deny=100M/loginclass"は、そのログインクラスに属するすべてのユーザのすべてのプロセスによって割り付けられた仮想メモリの合計が 100MB を超えないことを意味します。

有効な規則には、主題の値をデフォルトとする、指定された、それらのすべてのフィールドがあります。

フィルタは、per 以外のより多くのフィールドの 1 つのが空のままにされる規則です。例えば、あらゆる規則にマッチするフィルタは、":::=/"または短く ":"として書くことができました。すべてのログインクラスにマッチするフィルタは、"loginclass:"となります。 maxproc リソースのための定義された規則にすべてマッチするフィルタは、 "::maxproc"となります。

リソース

cputime CPU 時間、秒単位
datasize データサイズ、バイト単位
stacksize スタックサイズ、バイト単位
coredumpsize コアダンプサイズ、バイト単位
memoryuse 常駐設定サイズ、バイト単位
memorylocked ロックされたメモリ、バイト単位
maxproc プロセスの数
openfiles ファイル記述子テーブルサイズ
vmemoryuse アドレス空間の制限、バイト単位
pseudoterminals PTY の数
swapuse ワップ使用量、バイト単位
nthr スレッドの数
msgqqueued キューに入れられた SysV メッセージの数
msgqsize SysV メッセージキューのサイズ、バイト単位
nmsgq SysV メッセージキューの数
nsem SysV セマフォの数
nsemop 単一の semop(2) 呼び出しで変更された SysV セマフォの数
nshm SysV 共有メモリセグメントの数
shmsize SysV 共有メモリサイズ、バイト単位
wallclock wallclock 時間、秒単位
pcpu %CPU, 単一 CPU コアの割合の単位 (%)

アクション

deny 割り付けを拒絶します; cpu と wallclock に対してサポートされません
log 警告をコンソールにログ記録します
devctl devd(8) に通知を送信します
sig* 例えば、sigterm;原因となるプロセスにシグナルを送信します

サポートされるシグナルリストについては、 signal(3) を参照してください。

すべてのアクションは、すべてのリソースに対してサポートされるというわけではありません。与えられたリソースによってサポートされないアクションがある規則を追加する試みは、エラーの結果となります。

RSS を制限することは、シュラッシング (thrashing) のためのマシンを kill することに注意してください。

終了ステータス

The rctl utility exits 0 on success, and >0 if an error occurs.

使用例

ユーザ "joe"に対して仮想メモリの 1GB 以上の割り付けを抑制します:
rctl -a user:joe:vmemoryuse:deny=1g

すべての RCTL 規則を削除します:

rctl -r :

"www"と名前が付けられた jail のためのリソースの使用量の情報を表示します:

rctl -hu jail:www

PID 512 のプロセスに適用できるすべての規則を表示します:

rctl -l process:512

関連項目

rctl.conf(5)

歴史

rctl コマンドは、 FreeBSD 9.0 で登場しました。

作者

rctl コマンドは、 Edward Tomasz Napierala <trasz@FreeBSD.org>によって書かれました。
December 3, 2012 FreeBSD