EN JA
RTPRIO(1)
RTPRIO(1) FreeBSD General Commands Manual RTPRIO(1)

名称

rtprio, idprioユーティリティまたはプロセスのリアルタイムか、またはアイドルタイムスケジューリングの優先度を実行、調査または修正する

書式

[id|rt]prio

[id|rt]prio [ -] pid

[id|rt]prio priority command [ args]

[id|rt]prio priority -pid

[id|rt]prio -t command [ args]

[id|rt]prio -t -pid

解説

rtprio ユーティリティは、リアルタイムプロセスのスケジューリングを制御するために使用されます。

idprio ユーティリティは、アイドルタイムプロセスのスケジューリングを制御するために使用され、 rtprio と同じオプションで呼び出すことができます。

リアルタイム優先度のプロセスは、優先度低下対象とはならず、同じもしくはそれ以上のリアルタイム優先度のプロセスのみに横取りされます。

アイドル優先度のプロセスは、実行可能な他のプロセスが存在せず、優先度が同じもしくはより高い実行可能なアイドル優先度プロセスが存在しない場合のみ実行します。

rtprioidprio を引数無しで実行すると、現在のプロセスのリアルタイム優先度を表示します。

rtprio を引数 1 つと共に実行すると、指定した pid のリアルタイム優先度を返します。

priority を指定すると、プロセスまたはプログラムをリアルタイム優先度にて実行します。 -t を指定すると、プロセスまたはプログラムを通常のプロセス (非リアルタイムプロセス) として実行します。

-pid を指定すると、 pid をプロセス識別子として持つプロセスを修正します。そうではなく、 command を指定すると、プログラムを引数付きで実行します。

priority は、0 から RTP_PRIO_MAX (通常 31) の整数値です。 0 は、最高の優先度です。

pid に 0 を指定すると "現在のプロセス"を意味します。

root のみがプロセスのリアルタイムの優先度とアイドルの優先度を設定することができます。 sysctl(8) 変数 security.bsd.unprivileged_idprio が 0 以外に設定されているなら、ユーザは、自分のプロセスのアイドルの優先度を修正できます。プロセスが必要なリソースをロックし、その結果実行を始められないなら、これは、デッドロックが生じる可能性を増加させることに注意してください。

終了ステータス

rtprio がコマンドを実行するなら、終了値は、実行されたコマンドの終了値です。その他の場合に、 rtprio は、成功すれば、0 で終了し、他のすべてのエラーについては、1 で終了します。

使用例

現在のプロセスのリアルタイム優先度を調べるためには:
rtprio

プロセス 1423 のリアルタイム優先度を調べるためには:

rtprio 1423

最低のリアルタイム優先度で cron(8) を実行するためには:

rtprio 31 cron

プロセス 1423 のリアルタイム優先度を 16 に変更するためには:

rtprio 16 -1423

リアルタイム優先度なしで tcpdump(1) 実行するためには:

rtprio -t tcpdump

プロセス 1423 のリアルタイム優先度を RTP_PRIO_NORMAL (リアルタイムでない/通常の優先度) に変更するためには:

rtprio -t -1423

他のマシンの利用の邪魔をせずに make depend を行うためには:

idprio 31 make depend

歴史

rtprio は、 FreeBSD 2.0 で登場しましたが、HP-UX バージョンに似ています。

作者

Henrik Vestergaard Draboel <hvd@terry.ping.dk>は、最初の作者です。 FreeBSD でのこの実装は、 David Greenman によって大幅に書き直されました。

警告

CPU を大量消費するプロセスをリアルタイム優先度で実行するとシステムを操作できなくなります。

バグ

プロセス 0 (swapper) のリアルタイム優先度を設定及び確認する方法は有りません ( ps(1) を参照)。

FreeBSD ではプロセスのページがメモリ中に存在することを保証できないため、プロセスがページインのために停止することが有ります ( mprotect(2), madvise(2) 参照)。

FreeBSD では、今のところシステムコール内で実行権を横取りされることはありません。非リアルタイムプロセスが実行中であるためにリアルタイムプロセスに実行権が割り当てられないことや、アイドルプロセスが実行中であるために通常優先度プロセスに実行権が割り当てられないことがあります。

September 29, 2012 FreeBSD