run(1)                                   Concurrent RedHawk Linux                                 run(1)

 

名前

run プロセススケジューラ属性とCPUアフィニティの制御

 

概要

run [OPTIONS] { COMMAND [ARGS] | PROCESS/THREAD_SPECIFIER }

 

解説

runは、オプション指定した属性でコマンドを実行します、そしてコマンドのexit値を返します。もしPROCESS/THREAD_SPECIFIER が与えられるなら、runは指示したプロセスあるいはスレッドセットの環境を修正します。

 

オプション

       以下の1つ以上のオプションを指定してください:

 

--bias=[~]list, -b [~]list

指定のCPUリストでコマンドを動かします。

 listCPU IDをコンマで分割したリストあるいはCPU IDの範囲です。例: "0,2-4,6" リストは、ブートプロセッサを指定する”boot”か、あるいは、すべてのアクティブなプロセッサを指定する”active”かもしれません。オプションの先行するティルデ(~)は、リストを否定します(”active”は例外です)。バイアスに追加のCPUを加えるためには、ケーパビリティCAP_SYS_NICE が必要です。

 

--copies=count, -c count

指定された数だけコマンドの同一コピーを走らせます。

 

--policy=policy, -s policy

指定されたスケジューリングポリシーの下でコマンドを走らせます。Policyには、以下のキーワードを指定してください: SCHED_FIFO,SCHED_RR, SCHED_OTHER , SCHED_BATCH , SCHED_IDLE 。これらは fifo, rr, other,batch,idle として省略することができます。 スケジューリングポリシーについての詳細な情報は、sched_setscheduler(2) sched_getscheduler(2)を参照してください。異なったプライオリティを指定する-Pが使われないなら新しいポリシーの下でのスケジューリングプライオリティは、0をデフォルトとします。

 

--priority=priority, -P priority

指定されたpriority優先度でコマンドを走らせます。 優先度は、現在のスケジューリングポリシーに有効な整数値(あるいは-sオプションで指定されたスケジューリングポリシーで有効な整数値)でなければなりません。より高い数値は、より高いスケジューリング優先度を表します。

 

--quantum={quantum | list}, -q {quantum | list}

所定の quantum(クォンタム) でコマンドを走らせます。quantum値は、SCHED_RR SCHED_OTHER スケジューリングポリシーの下でだけ、意味を持ちます。quantumは、スライス時間に対応している nice値として明示されます。nice値は-20から19の間になくてはなりません。

       デフォルトで、-20 quantum値は、200ms のスライス時間をもたらします、そして19quantum値は、10msのスライス時間をもたらします。

このスライス時間の値は、システムで定義されたnice値のテーブルに記述された値を使用しなければなりません。

もし定義されないquantum値が指示されるなら、"unsupported  quantum" エラーメッセージが返されます。 "list" を指定すると nice値に対応したスライス時間のテーブルを表示します。

 

--resetonfork, -r

スケジューリングポリシーを決定するとき、 SCHED_RESET_ON_FORK 属性を使います。  --policy SCHED_FIFO あるいは SCHED_RR オプションが使われるとき、指定されたプロセスあるいはコマンドによって作り出された子は、親のリアルタイムスケジューリングポリシーを継承しないでしょう;それらはその代わりに SCHED_OTHER スケジューリングポリシーに割り当てられますさらに、もし親プロセス nice値が負の値の場合、親のスケジューリングポリシーにかかわらず、子供のプロセスが0の nice値を割り当てられるでしょう。--policyオプションと併せて使われるときだけ、このオプションは正当です。

 

--fork, -f

指定されたコマンドをバックグラウンドで実行させて、そしてすぐに戻ります。

 

--info, -i

指定されたプロセスあるいはスレッドの環境情報を表示します。 プロセス/スレッドの指定が無い場合、このオプションはrun自身の情報を表示します。

 

--mappings, -m

指定されたプロセスあるいはスレッドのそれぞれのNUMAノード上でユーザーによってマップされたページの数を出力します。

 

--mempolicy=MEMPOLICY_SPECIFIER, -M MEMPOLICY_SPECIFIER.

現在実行しているプロセスに NUMA メモリポリシーを割り当てます。

(この定義は、後述の” PROCESS/THREAD_SPECIFIER”と同時に使うことができません)。  このオプションはカーネルに NUMA サポートを持っているシステムでだけ利用可能です。

 

--lock=MLOCK_SPECIFIER, -L MLOCK_SPECIFIER

指定されたプロセスに属しているバーチャルアドレス空間をロックあるいは、アンロックします。詳細は、下記の” MLOCK_SPECIFIER”を見てください。

 

--verbose, -v

すべてのオペレーションの前にインフォメーションを表示させます。

 

--help, -h

ヘルプ表示を行い、終了します。

 

--version, -V

バージョン情報を表示して、そして終了します。

 

すべてのリストで、複数のコンマで分離された値、あるいは適切な範囲を指定することができます(例えば「run -b 0,2-4,6 autopilot」)。

キーワードに代入を要求するオプション(例えば run --priority=24 )とキーワードを除くことを要求するオプションのような場合に、同じコマンドラインの指示に組み合わせられないかもしれません。

 

PROCESS/THREAD_SPECIFIER

プロセスあるいはスレッドを指定するために使われます。下記の1つだけを指定します:

       --all, -a

すべての既存のプロセス/スレッドを選択します。カタストロフィックなシステム障害に対しての保護のため非RedHawk システムでは、rootユーザは、スケジューラーあるいはアフィニティ変更のリクエストと合わせたこのオプションを使うことはできません。

--pid=list, -p lis

変更する既存の プロセスID のリストを指定します。 すべてのスケジューラーオペレーションは、プロセスリストで表示される、プロセスに含まれるサブスレッドを含めた完全なプロセスです。

 

--tid=list, -t list

変更する既存のスレッドID のリストをlistで指定します。 すべてのスケジューラーオペレーションは指示したスレッドのみに適用されます。指示していない、兄弟スレッドは、変更されません。コンカレント社 PowerMAX OS との互換性のために、 -l list を使うことができます。

 

--group=list, -g list

変更するプロセスグループのリストをlistで指定します。プロセスグループのプロセスすべてが変更されます。

 

--user=list, -u list

変更するユーザーのリストをlistで指定します;リストされたユーザーによって所有されているすべての既存のプロセスが変更されます。 ユーザーリストは、ユーザーIDあるいは文字のログインIDの何れかを使用できます。

 

--name=list, -n list

変更する既存のプロセス名のリストをlistで指定します。

 

MEMPOLICY_SPECIFIER

--mempolicyオプションで NUMA メモリポリシーを指定するために使われます。 メモリポリシーの詳細は、 set_mempolicy(2)を見てください。下記の1つだけを指定します:

 

 [~]list

 b[ind]=[~]list

listに指示されたCPUのローカルメモリを使って MPOL_BIND タスク規模の NUMA メモリポリシーを使って指定されたプログラムを実行します。   先行するティルデ(~)は、任意のリストを否定します。

 

b[ind]

バイアスオプションで暗に指示されたCPUのローカルメモリを使って MPOL_BIND タスク規模の NUMA メモリポリシーを使って指定されたプログラムを実行します。 バイアスオプションが指定されなくてはなりません。

 

このオプションが使われるとき、指定されたCPUが存在するNUMAノードのみからメモリページが割り当てられます。もしメモリアロケーションのリクエストの時点で NUMA ノードメモリが利用できないなら、同じユーザーアドレス空間を共有するプロセス、その子プロセスのすべてとすべてのスレッドが SIGKILL シグナルを送られカーネルによって終了さます。

 

i[nterleave]=[~]list

listに指示されたCPUのローカルメモリを使って MPOL_INTERLEAVE タスク規模の NUMA メモリポリシーを使って指定されたプログラムを実行します。

先行するティルデ(~)は、任意のリストを否定します。

 

p[referred]=cpu

cpuで指示されたCPUのローカルメモリをできるだけ使って MPOL_PREFERRED タスク規模の NUMA メモリポリシーを使って指定されたプログラムを実行します。

p[referred]

MPOL_PREFERRED タスク規模の NUMA メモリポリシーで、優先メモリ割り当てが生じる cpu を含んでいるノード上(ローカルなアロケーションポリシー)で指定されたプログラムを実行してください。

d[efault]

MPOL_DEFAULT タスク規模の NUMA メモリポリシーを使って指定されたプログラムを実行してください。これはデフォルトのメモリポリシーです。

 

n[odes]

それぞれの NUMA ノード上のCPUをビットマスク書式で示した、総量と現在使用可能なメモリ量を表示します。このオプションは単独でのみ使用できます。

 

c[pulist]

それぞれの NUMA ノード上のCPUをCPULIST書式で示した、総量と現在使用可能なメモリ量を表示します。このオプションは単独でのみ使用できます。

 

v[iew]

現在のプロセスの mempolicy 設定を表示してください。  このオプションは単独でのみ使用できます。

 

MLOCK_SPECIFIER

指定したプロセスのアドレス空間を、ロックあるいはアンロックするために使用します。このオプションでは、プロセス名あるいは、プロセスIDを指示するPROCESS/THREAD_SPECIFIERを使用します。メモリロックの詳細は、mlockall_pid(2)を見てください。下記の1つだけを指定します:

 

a[ll]

指定されたアドレス空間の現在のマッピングとこれから作られるメモリマッピングをロックします。

 

c[urrent]

指定されたアドレス空間の現在のメモリマッピングのみロックします。

 

f[uture]

指定されたアドレス空間でこれから作られるメモリマッピングをロックします。

 

u[nlock]

指定されたアドレス空間すべてのメモリマッピングをアンロックします。

 

下記のrunコマンドで実行される make(1)は、デフォルト SCHED_OTHER スケジューリングポリシーのデフォルトプライオリティでCPU 0-3の上でバックグラウンド処理されます。

 

run --bias=0-3 make &

 

下記のrunコマンドで実行されるdate(1)は、SCHED_RR(ラウンドロビン)のスケジューリングポリシーで、優先度10で処理されます。

 

run -s SCHED_RR -P 10 date

 

次のコマンドはプロセスID987のスケジューリングプライオリティをレベル32に変えます。

 

run --priority=32 -p 987

 

次のコマンドはプロセスグループ1456のすべてのプロセスを CPU3 に移動します。

 

run -b 3 -g 1456

 

次のコマンドはその名前が「pilot」であるすべてのプロセスをプライオリティ21SCHED_FIFO(ファースト・イン・ファースト・アウト)スケジューリングポリシーで動作するように設定します。

 

run -s fifo -P 21 -n pilot

 

次のコマンドは、システムのCPUから、CPU2CPU3を除いた、CPU上でMPOL_BINDのメモリポリシーで、”myapp”を実行します。

 

run -M b -b ~2,3 myapp

 

次のコマンドは、すべてのプロセスのNUMA ノード上のマップされたページの数を表示します。

 

run -m -a

 

次のコマンドでは、PIDで指定されたプロセスの使用している総てのメモリをロックし、バイアスをCPU1に設定します。

 

 run -b 1 -La -p 1354,1657

 

終了ステータス

通常、終了ステータスはゼロです。  しかし、もしプロセス環境を変えようとしている間に、エラーが発生した場合には、診断メッセージが表示され、1の終了ステータスが返されます。

 

もしコマンドが指定されるなら、プロセス環境を変える間にエラーが発生しない限り、runの終了ステータスはコマンドの終了ステータスです。プロセス環境を変える間にエラーが発生した場合、診断メッセージがプリントされ、1の終了ステータスが返されます。

 

もしコマンドが指定され、そして --fork 、あるいは --copiesにオプションが同時に指定され多場合の、呼び出されたコマンドの終了コードは無視されます。

そして、プロセス環境を変える間に発生しないなら、終了ステータスはゼロです。もし、プロセス環境を変える間にエラーが発生した場合、診断メッセージがプリントされ、1の終了ステータスが返されます。

 

著作権

 

Copyright (C) 2001  Concurrent Computer Corporation

 

runソースコードはGNUGPLバージョン2の下で認可されます。  runコマンドによって使われるライブラリはGNU LGPL バージョン2.1の下でライセンスを与えられます。

Author: Jason Baietto (jason.baietto@concurrent-rt.com)

 

                                                         December 2010                                           run(1)