プロセッサー使用の制御
このセクションでは、マルチプロセッサー・システムでのプロセッサーの使用を制御する方法について説明します。
- ユーザーが、 プロセスまたはカーネルのスレッドを強制的に特定のプロセッサー上で実行させることができる。
プロセスとカーネル・スレッドのバインディング
ユーザーは、 プロセスを特定のプロセッサー上で強制的に実行させることができます。 このアクションは、バインディング と呼ばれます。 システム管理者は、任意のプロセスをバインドすることができます。 バインドは、コマンド行から bindprocessor コマンドによって制御されます。
プロセス自体がバインドされるのではなく、 そのカーネル・スレッドがバインドされます。 カーネル・スレッドは、 いったんバインドされると、後でアンバインドされた場合を除き、 選択されたプロセッサーで実行するように常にスケジュールされます。 新しいカーネル・スレッドが作成されると、そのカーネル・スレッドはその作成者と同じバインド属性になります。
この状態は、 fork サブルーチンによって作成された新規プロセスの初期スレッドに適用されます。新規スレッドは、 fork サブルーチンを呼び出したスレッドのバインド・プロパティーを継承します。 exec サブルーチンが呼び出されると、バインド・プロパティーは変更されません。 プロセスがプロセッサーにバインドされた後、 他にバインディングまたはアンバインディングのアクションが実行されていない場合、 すべての子プロセスが同じプロセッサーにバインドされます。
The available processors are: 0 1 2 3バインドは、 bindprocessor サブルーチンを使用してプログラム内で制御することもできます。これにより、プログラマーは単一のカーネル・スレッドまたはプロセス内のすべてのカーネル・スレッドをバインドすることができます。 プログラマーは、 単一カーネル・スレッドまたは全カーネル・スレッドをアンバインドすることもできます。