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 コマンドは、 <trasz@FreeBSD.org>によって書かれました。December 3, 2012 | FreeBSD |