'\" te .\" Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. .\" Copyright 1989 AT&T .TH priocntl 1 "2012 年 6 月 15 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 priocntl \- 指定したプロセスおよび LWP のスケジューリングパラメータの表示または設定 .SH 形式 .LP .nf \fBpriocntl\fR \fB-l\fR .fi .LP .nf \fBpriocntl\fR \fB-d\fR [\fB-i\fR \fIidtype\fR] [\fIidlist\fR] .fi .LP .nf \fBpriocntl\fR \fB-s\fR [\fB-c\fR \fIclass\fR] [\fIclass-specific \fR \fIoptions\fR] [\fB-i\fR \fIidtype\fR] [\fIidlist\fR] .fi .LP .nf \fBpriocntl\fR \fB-e\fR [\fB-c\fR \fIclass\fR] [\fIclass-specific \fR \fIoptions\fR] \fIcommand\fR [\fIargument(s)\fR] .fi .SH 機能説明 .sp .LP \fBpriocntl\fR コマンドは、指定したプロセスまたは LWP のスケジューリングパラメータを表示または設定します。また、システムのプロセススケジューラの 現在の構成情報を表示したり、指定したスケジューリングパラメータを使って コマンドを実行したりする目的にも使用できます。 .sp .LP プロセスと LWP はいくつかのクラスに分けられます。各クラスにはそれぞれ異なったスケジューリング方針が適用されます。現在サポートされているクラスは、リアルタイムクラス、タイムシェアリングクラス、対話型クラス、フェアシェアクラス、および固定優先度クラスです。各クラスの特徴およびクラス固有のオプションについては、後述の「リアルタイムクラス」、「タイムシェアリングクラス」、「対話型クラス」、「フェアシェアクラス」、「固定優先度クラス」のセクションで説明します。\fB\fR\fB\fR\fB\fR\fB\fR\fB\fRユーザーは、正しいアクセス権を持っていれば、\fBpriocntl\fR コマンドを使って、稼動中のプロセスまたは LWP のクラスや対応するスケジューリングパラメータを変更できます。 .sp .LP デフォルトの構成では、実行可能状態にあるリアルタイムプロセスまたは LWP がほかのプロセスに先だって実行されます。したがって、リアルタイムプロセスまたは LWP の使い方を誤ると、システムのパフォーマンスが著しく損なわれてしまう恐れがあります。 .sp .LP priocntl コマンドに \fIidlist\fR 引数を指定する場合は、コマンド行の最後に記述してください。また idlist 中の要素は、スペースで区切る必要があります。\fIidlist\fR 引数を省略するときは、\fIidtype\fR 引数として \fBpid\fR、\fBppid\fR、\fBpgid\fR、\fBsid\fR、\fBtaskid\fR、\fBclass\fR、\fBuid\fR、\fBgid\fR、\fBprojid\fR、または \fBzoneid\fR を使って、\fBpriocntl\fR コマンド自体のプロセス \fBID\fR、親プロセス \fBID\fR、プロセスグループ \fBID\fR、セッション \fBID\fR、タスク \fBID\fR、クラス、ユーザー \fBID\fR、グループ \fBID\fR、プロジェクト \fBID\fR、またはゾーン \fBID\fR をそれぞれ指定します。 .sp .LP コマンド .sp .in +2 .nf priocntl -d [-i \fIidtype\fR] [\fIidlist\fR] .fi .in -2 .sp .sp .LP これは、\fIidtype\fR および \fIidlist\fR 引数で指定したプロセス群のクラスとクラス固有のスケジューリングパラメータを表示します。 .sp .LP コマンド .sp .in +2 .nf priocntl -s [-c \fIclass\fR] [\fIclass-specific options\fR] \e [-i \fIidtype\fR] [\fIidlist\fR] .fi .in -2 .sp .sp .LP これは、指定したプロセスのクラスおよび クラス固有のパラメータを、コマンド行で指定した値に設定します。\fB-c\fR \fIclass\fR オプションが、設定するクラスを表します。現在サポートされている \fIclass\fR 引数値は、リアルタイムクラス用の \fBRT\fR、タイムシェアリングクラス用の \fBTS\fR、対話型クラス用の \fBIA\fR、フェアシェア用の \fBFSS\fR、固定優先度用の \fBFX\fR のいずれかです。 .sp .LP 各クラス固有のパラメータは、対応するクラス固有のオプションを使って指定します。詳しくは各クラスの項で後述します。\fB-c\fR \fI class\fR オプションを省略する場合には、\fIidtype\fR と \fIidlist\fR を使って、同じクラスに属する一群のプロセスまたは LWP を指定してください。そうしないとエラーが発生します。クラス固有のオプションをすべて省略すると、このプロセスのクラス固有パラメータの値は、\fB-c\fR \fIclass\fR で指定したクラスのデフォルト値に設定されます。なお、\fB-c\fR \fIclass\fR オプションも省略した場合には、そのプロセスの現在のクラスのデフォルト値に設定されます。 .sp .LP \fBpriocntl\fR を使ってプロセスまたは LWP のスケジューリングパラメータを変更するには、\fBpriocntl\fR を実行したユーザーの実ユーザー ID または実効ユーザー \fBID\fR (それぞれのグループ ID) がこのプロセスまたは LWP の実ユーザー \fBID\fR または実効ユーザー ID (それぞれのグループ ID) と一致しているか、ユーザーの実効ユーザー \fBID\fR がスーパーユーザーを示している必要があります。アクセス権に関するこの要件は、全クラスに適用される最低限の必要条件です。クラスによっては、プロセスを設定する場合や クラス固有のスケジューリングパラメータを設定する場合に、他のアクセス権に関する要件が追加されることもあります。 .sp .LP \fIidtype\fR と \fIidlist\fR の両引数を使って (LWP のリストを指定して、または指定しないで) いくつかのプロセスを指定すると、\fBpriocntl\fR はそれらのプロセスに対して処理を実行します。ただし、処理する順序は実装状態により異なります。エラーを検出した場合、そのエラーの種類により、以降のプロセスの処理を続行できる場合と続行できない場合とがあります。\fB\fR .sp .LP 検出したエラーがアクセス権に関連するものであれば、\fBpriocntl\fR はエラーメッセージを出力しますが、設定されたプロセスのうちユーザーが適正な アクセス権を持っているものについては、パラメータをリセットして処理を続行します。エラーがアクセス権に関連したものでなければ、エラーメッセージを表示してただちに実行を終了します。\fB\fR .sp .LP 特殊なシステムプロセス (たとえばスワッパプロセス) の実行をスケジューリングする目的のため、\fBsys\fR という特殊なスケジューリングクラスが存在しています。どのプロセスに対しても、クラスを \fBsys\fR に変更することはできません。また、\fIidtype\fR や \fIidlist\fR 引数で \fBsys\fR クラスに属するプロセスまたは LWP を指定した場合、\fBpriocntl\fR はそれらを無視します。たとえば \fIidtype\fR として \fBuid\fR を指定し \fIidlist\fR に 0 (ゼロ) を指定すると、\fBUID\fR の値が \fB0\fR の全プロセスのうち \fBsys\fR クラスに属するものを除いたプロセス、および (\fB-s\fR オプションを使ってパラメータを変更する場合には) \fBinit\fR プロセスが処理の対象となります。 .sp .LP \fBinit\fR プロセス (プロセス \fBID\fR は \fB1\fR) は特殊なケースです。\fBpriocntl\fR コマンドを使って \fBinit\fR プロセスのクラスやその他のスケジューリングパラメータを変更するためには、\fIidtype\fR として \fBpid\fR を指定し、\fIidlist\fR として \fB1\fR だけを指定してください。\fBinit\fR プロセスは、システム上に存在するどのクラスに割り当てても構いませんが、ほとんどの場合タイムシェアリングクラスを選択するのが適切です。ほかの選択肢は非常に望ましくありません。詳細は、\fI『Managing System Information, Processes, and Performance in Oracle Solaris 11.3 』\fRを参照してください。 .sp .LP コマンド .sp .in +2 .nf priocntl -e [-c \fIclass\fR\fB]\fR [\fIclass-specific options\fR] \fIcommand\fR \e [\fIargument...\fR] .fi .in -2 .sp .sp .LP このコマンドは、command で示すコマンドを、指定したクラスとスケジューリングパラメータを使って実行します。\fIarguments\fR は、command に対する引数です。\fB-c\fR \fIclass\fR オプションを省略すると、指定したコマンドはユーザーの現クラスで実行されます。 .SH オプション .sp .LP サポートしているオプションは、次のとおりです。 .sp .ne 2 .mk .na \fB\fB-c\fR \fIclass\fR\fR .ad .sp .6 .RS 4n 設定するクラスを指定します。\fI\fR現在サポートされている \fIclass\fR 引数値は、リアルタイムクラス用の \fBRT\fR、タイムシェアリングクラス用の \fBTS\fR、対話型クラス用の \fBIA\fR、フェアシェア用の \fBFSS\fR、固定優先度用の \fBFX\fR のいずれかです。指定したクラスが構成されていない場合には、自動的に構成されます。 .RE .sp .ne 2 .mk .na \fB\fB-d\fR\fR .ad .sp .6 .RS 4n 設定したプロセスに対応したスケジューリングパラメータを表示します。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR\fR .ad .sp .6 .RS 4n 指定したコマンドを、指定したプロセスに 対応したスケジューリングパラメータを使って実行します。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fIidtype\fR\fR .ad .sp .6 .RS 4n このオプションは、\fIidlist\fR 引数 (もし存在していれば) とともに、\fBpriocntl\fR コマンドの処理対象となる 1 つ以上のプロセスまたは LWP を指定します。\fIidlist\fR がどのように解釈されるかは、\fIidtype\fR の値により異なります。\fB-d\fR オプションまたは \fB-s\fR オプションを指定するときに、\fB-i\fR \fIidtype\fR オプションを指定しない場合、デフォルトの \fIidtype\fR として \fBpid\fR が想定されます。 .sp \fIidtype\fR として指定可能な値、およびそれぞれの値に対応した \fIidlist\fR の解釈は以下のとおりです。 .sp .ne 2 .mk .na \fB\fB-i\fR \fBall\fR\fR .ad .sp .6 .RS 4n \fBpriocntl\fR コマンドの処理対象は、存在しているすべてのプロセスです。この場合、\fIidlist\fR 引数は指定できません。指定しても無視されます。また次に述べるアクセス権上の制限事項は、この all 指定の場合でも有効です。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBctid\fR\fR .ad .sp .6 .RS 4n idlist は、プロセスの契約 ID のリストです。\fBpriocntl\fR コマンドの処理対象は、リスト内の ID と同一のプロセスの契約 ID を持つすべてのプロセスです。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBclass\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は単一のクラス名です (リアルタイム クラスなら \fBRT\fR 、タイムシェアリングクラスなら \fBTS\fR 、対話型クラスなら \fBIA\fR、フェアシェアクラスなら \fBFSS\fR、固定優先度クラスなら \fBFX\fR)。\fBpriocntl\fR コマンドの処理対象は、指定されたクラスに属するすべてのプロセスです。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBgid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は、グループ \fBID\fR のリストです。\fBpriocntl\fR コマンドは、このリスト内の \fBID\fR に等しい実効グループ \fBID\fR を持つすべてのプロセスに適用されます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBpgid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR はプロセスグループ \fBID\fR のリストです。\fBpriocntl\fR コマンドは、指定されたプロセスグループ内のすべてのプロセスに適用されます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fB\fIpid\fR[/\fIlwps\fR]\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR はプロセス \fBID\fR のリストであり、各 \fBID\fR のあとにはスラッシュ (\fB/\fR) と、コンマで区切られた \fBLWP ID\fR のリストが続く可能性があります。\fBLWP ID\fR の範囲は、範囲内の最初と最後の項目をハイフン (\fB-\fR) で区切って示すことができます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBppid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は親プロセス \fBID\fR のリストです。\fBpriocntl\fR コマンドは、親プロセス \fBID\fR がこのリスト内にあるすべてのプロセスに適用されます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBprojid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR はプロジェクト \fBID\fR のリストです。\fBpriocntl\fR コマンドは、このリスト内の \fBID\fR に等しい実効プロジェクト \fBID\fR を持つすべてのプロセスに適用されます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBsid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は、セッション \fBID\fR のリストです。\fBpriocntl\fR コマンドの処理対象は、指定されたセッション中のすべてのプロセスです。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBtaskid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は、タスク \fBID\fR のリストです。\fBpriocntl\fR コマンドの処理対象は、指定されたタスクのすべてのプロセスです。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBuid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR は、ユーザー \fBID\fR のリストです。\fBpriocntl\fR コマンドは、このリスト内の \fBID\fR に等しい実効ユーザー \fBID\fR を持つすべてのプロセスに適用されます。 .RE .sp .ne 2 .mk .na \fB\fB-i\fR \fBzoneid\fR\fR .ad .sp .6 .RS 4n \fIidlist\fR はゾーン \fBID\fR のリストです。\fBpriocntl\fR コマンドは、このリスト内の \fBID\fR に等しい実効ゾーン \fBID\fR を持つすべてのプロセスに適用されます。 .RE .RE .sp .ne 2 .mk .na \fB\fB-l\fR\fR .ad .sp .6 .RS 4n 現在システム上に定義されているクラスの一覧を、各クラス固有の情報とともに表示します。クラス固有情報の出力形式は「使用法」の節で説明します。 .RE .sp .ne 2 .mk .na \fB\fB-s\fR\fR .ad .sp .6 .RS 4n 指定したプロセスに対応したスケジューリングパラメータを設定します。 .RE .sp .LP リアルタイムクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。 .sp .ne 2 .mk .na \fB\fB-p\fR \fIrtpri\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のリアルタイム優先度を、\fIrtpri\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fItqntm\fR [\fB-r\fR \fIres\fR]\fR .ad .sp .6 .RS 4n 指定したプロセスのタイムクアンタムを、\fItqntm\fR に設定します。タイムクアンタムの単位を指定することも可能です (詳しくは後述)。 .RE .sp .ne 2 .mk .na \fB\fB-q\fR \fItqsig\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のリアルタイムのタイムクアンタムシグナルを \fItqsig\fR に設定します。 .RE .sp .LP タイムシェアリングクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。 .sp .ne 2 .mk .na \fB\fB-m\fR \fItsuprilim\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度の制限値を、\fItsuprilim\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fItsupri\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度を、\fItsupri\fR に設定します。 .RE .sp .LP 対話型クラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。 .sp .ne 2 .mk .na \fB\fB-m\fR \fIiauprilim\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度の制限値を、\fIiauprilim\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIiaupri\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度を、\fIiaupri\fR に設定します。 .RE .sp .LP フェアシェアクラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。 .sp .ne 2 .mk .na \fB\fB-m\fR \fIfssuprilim\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度の制限値を、\fIfssuprilim\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIfssupri\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度を、\fIfssupri\fR に設定します。 .RE .sp .LP 固定優先度クラスのパラメータを設定する場合には、以下のクラス固有のオプションを指定できます。 .sp .ne 2 .mk .na \fB\fB-m\fR \fIfxuprilim\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度の制限値を、\fIfxuprilim\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIfxupri\fR\fR .ad .sp .6 .RS 4n 指定したプロセスおよび LWP のユーザー優先度を、\fIfxupri\fR に設定します。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fItqntm\fR\fR .ad .sp .6 .RS 4n [\fB-r\fR \fIres\fR] 指定したプロセスおよび LWP のタイムクアンタムを、\fItqntm\fR に設定します。タイムクアンタムの単位を指定することも可能です (詳しくは後述)。 .RE .SH 使用法 .SS "リアルタイムクラス" .sp .LP リアルタイムクラスは、高速でかつ決定力のある応答を必要とし、スケジューリング方針に関して ユーザーやアプリケーションに対する 絶対的な制御権を必要とするようなプロセスに対して、固定された高い優先度を持つ スケジューリング方針を与えるものです。システム中にリアルタイムクラスが定義されている場合には、システム上の最上位のスケジューリング優先順位群を 制御できる唯一のクラスである必要があります。これにより、実行可能状態にあるリアルタイムプロセスは、ほかのクラスに属するあらゆるプロセスよりも先に \fBCPU\fR のサービスを受けられることが保証できます。 .sp .LP リアルタイムクラスには、一連のリアルタイム優先度値 (\fIrtpri\fR) が与えられていて、そのクラスに属するプロセスに割り当てることができます。リアルタイム優先順位値の範囲は 0 から \fIx\fR までで、この \fIx\fR の値はリアルタイムクラスのスケジューラを構成済みのシステムごとに設定可能であり、次のコマンドを使って表示することができます。 .sp .in +2 .nf priocntl -l .fi .in -2 .sp .sp .LP リアルタイムクラスのスケジューリング方針とは、固定優先度を割り当てることです。つまり、ユーザーやアプリケーション側からのプロセスの \fIrtpri\fR 値を変更する明示的な要求を実行しない限り、リアルタイムプロセスのスケジューリング優先度は 変わりません。 .sp .LP リアルタイムクラスのプロセスに関して、\fIrtpri\fR の値はプロセスのスケジューリング優先度と実用上同じです。リアルタイムクラスのあるプロセスの、同じクラス内の他のプロセスに対する 相対的なスケジューリング優先度値は、\fIrtpri\fR 値により決定されます。\fIrtpri\fR 値は数値で示され、大きい数が高い優先順位を表します。リアルタイムクラスはシステム中で最も高い スケジューリング優先順位群を制御しているので、実行可能状態にあるリアルタイムプロセスのうち最高の \fIrtpri\fR 値を持つプロセスが システム中の他のあらゆるプロセスに先だって選ばれる、ということが保証されています。 .sp .LP \fBpriocntl\fR は、優先度に関する制御権だけでなく、リアルタイムクラス中のプロセスに割り当てられるタイムクアンタムを制御する権利も提供しています。このタイムクアンタム値は、プロセスがリソースやイベントの待ち状態 (休眠状態) に陥らないという前提で、プロセスの実行時間の最大値を指定するものです。\fB\fRなお、あるプロセスの稼動中に、より高い優先度を持つ他のプロセスが 実行可能状態になった場合、現在稼動中のプロセスは割り当てられたタイムクアンタムに達していなくても 取り上げられてしまうことがあります。 .sp .LP コマンド .sp .in +2 .nf priocntl -d [-i \fIidtype\fR] [\fIidlist\fR] .fi .in -2 .sp .sp .LP このコマンドは、\fIidtype\fR と \fIidlist\fR で指定した一群のリアルタイムプロセスの 個々のリアルタイム優先度、時間 (単位はミリ秒)、およびタイムクアンタムシグナル値を表示します。 .sp .LP リアルタイムクラス用の \fBpriocntl\fR \fB-s\fR または \fBpriocntl\fR \fB-e\fR コマンドには、\fB-p\fR、\fB-t\fR [\fB-r\fR]、および \fB-q\fR を任意の組み合わせで指定できます。どれかを省略した場合、当該プロセスが現在リアルタイムであれば、省略されたオプションに対応したパラメータには影響ありません。あるプロセスをほかのクラスからリアルタイムクラスに変更するような priocntl コマンド中でいずれかのオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。\fIrtpri\fR のデフォルト値は \fB0\fR です。タイムクアンタムのデフォルトは、\fIrtpri\fR の値およびシステムの構成により異なります (\fBrt_dptbl\fR(4) 参照)。 .sp .LP \fB-t\fR \fItqntm\fR オプションを使用する際、タイムクアンタムの単位を \fB-r\fR \fIres\fR オプションを使って指定することもできます。単位のデフォルトはミリ秒です。\fIres\fR には、\fB1\fR から \fB1,000,000,000\fR までの正の整数を指定してください。この場合、使用される単位は \fIres\fR 分の 1 秒となります。たとえば、\fB-t\fR \fB10\fR \fB-r\fR \fB100\fR と指定すると、単位は 100 分の 1 秒となり、タイムクアンタム長として指定されている 10 は、10/100 つまり 10 分の 1 秒を意味することになります。ナノ秒などの細かい単位も指定可能ですが、実際にはシステムクロックの精度に合うように タイムクアンタム長は丸められてしまいます。タイムクアンタムとして 0 を指定した場合、およびシステムに固有の最大クアンタムを超える 大きな値を指定した場合には、エラーとなります。 .sp .LP リアルタイム時間シグナルを使用すると、実行中のリアルタイムプロセスに自身の時間消費量を知らせることができます。リアルタイム時間シグナルはリアルタイムプロセスを監視し、その実行時間が上限に達した時点で、構成されているシグナルをリアルタイムプロセスに送信します。時間シグナル \fItqsig\fR のデフォルト値 (\fB0\fR) は、シグナルを送信しないことを示します。tqsig に正の値を指定すると、その値ごとに設定されているシグナルが送信されます。\fBkill\fR(1) などのシグナルを扱う コマンドの場合と同様に、\fB-q\fR \fItqsig\fR オプションを指定して \fBXCPU\fR や \fBKILL\fR のようなシンボルを使用したシグナル名も扱うことができます。 .sp .LP プロセスのクラスを他のものからリアルタイムクラスに変更するには、\fBpriocntl\fR コマンドを実行するユーザーがスーパーユーザー特権を 持つ必要があります。また、リアルタイムプロセスの \fIrtpri\fR 値やタイムクアンタムを変更するには、\fBpriocntl\fR コマンドを実行するユーザーはスーパーユーザーであるか、あるいは現在リアルタイムクラスにいて (リアルタイムプロセスとして稼動中のシェル) その実ユーザー \fBID\fR または実効ユーザー ID が処理対象のプロセスの実ユーザー ID または実効ユーザー \fBID\fR と一致している必要があります。 .sp .LP \fBfork\fR(2) や \fBexec\fR(2) などのシステムコールを使った場合、リアルタイム優先度、タイムクアンタム、およびタイムクアンタムシグナルは、これらのシステムコールに受け継がれます。\fBexec\fR(2) システムコールで、ユーザー定義のシグナルハンドラを持つ時間シグナルが使用された場合、指定された時間の上限に達する前に、新しいイメージの中にユーザーが定義のシグナルハンドラがインストールされている必要があります。そうでない場合、予測できない動作が発生します。 .SS "タイムシェアリングクラス (TS クラス)" .sp .LP タイムシェアリングのスケジューリング方針とは、\fBCPU\fR の消費に関して異なった性質を持つプロセスに対して、公平で有効な \fBCPU\fR リソースの割り付けを行うことです。タイムシェアリング方針の目的は、対話型プロセスには速いレスポンスを提供し、\fBCPU\fR 消費型のジョブには高いスループットを提供し、さらにスケジューリングの制御権をユーザーやアプリケーションにもある程度与えることにあります。 .sp .LP タイムシェアリングクラスには、一連のタイムシェアリングユーザー優先度値 (\fIrtpri\fR) が与えられていて、そのクラスに属するプロセスに割り当てることができます。ユーザー優先順位値の範囲は \fI-x\fR から \fI+x\fR までで、この \fIx\fR の値はシステムごとに構成可能であり、以下のコマンドを使って表示することができます。 .sp .in +2 .nf priocntl -l .fi .in -2 .sp .sp .LP ユーザー優先度の目的は、タイムシェアリングクラスのプロセスのスケジューリングを、ユーザーやアプリケーションがある程度制御できるようにすることです。タイムシェアリングクラスのプロセスの \fItsupri\fR 値を増減させれば、そのプロセスのスケジューリング優先度が上下します。ただし、高い \fItsupri\fR 値を持つタイムシェアリングプロセスが、低い \fItsupri\fR 値を持つプロセスよりも先に実行されるとは限りません。なぜなら \fItsupri\fR 値は、タイムシェアリングプロセスの スケジューリング優先度を決定する際の 要素の 1 つにしかすぎないからです。システムは最近のシステム利用率などほかの要素を考慮の上、タイムシェアリングプロセスの 内部スケジューリング優先度を動的に調整します。\fB\fR .sp .LP \fBpriocntl\fR \fB-l\fR で表示される、システム全体でのユーザー優先度上限のほかに、プロセスごとにユーザー優先度上限 (\fItsuprilim\fR) があります。この値は、プロセスの \fItsupri\fR として設定できる最大の値を示します。 .sp .LP コマンド .sp .in +2 .nf priocntl -d [-i \fIidtype\fR] [\fIidlist\fR] .fi .in -2 .sp .sp .LP このコマンドは、\fIidtype\fR と \fIidlist\fR で指定した一群のタイムシェアリングプロセスの 個々のユーザー優先度と 優先度制限値を表示します。 .sp .LP タイムシェアリングプロセスは、自身の (および同じユーザー \fBID\fR を持つほかのプロセスの) \fItsuprilim\fR 値を下げることができます。\fItsuprilim\fR 値を上げることができるのは、スーパーユーザー特権を持つプロセスだけです。あるプロセスのクラスをタイムシェアリングから他のクラスに変更する場合、\fItsuprilim\fR の初期値を 0 より大きい値に設定するには、スーパーユーザー特権が必要となります。 .sp .LP どのタイムシェアリングプロセスも、自身の (および同じユーザー \fBID\fR を持つ他のプロセスの) \fItsupri\fR 値を設定できますが、そのプロセスの \fItsuprilim\fR 値を超えることはできません。\fItsuprilim\fR を超える値に \fItsupri\fR を設定しようとした場合、または \fItsupri\fR 未満の値に \fItsuprilim\fR を設定しようとした場合には、結果として \fItsupri\fR が \fItsuprilim\fR と等しい値に設定されます。 .sp .LP タイムシェアリングクラス用の \fBpriocntl\fR \fB-s\fR または \fBpriocntl\fR \fB-e\fR コマンド中に、\fB-m\fR と \fB-p\fR の両オプションを任意の組み合せで指定できます。どちらかを省略した場合、当該プロセスが現在タイムシェアリングであれば、省略されたオプションに対応したパラメータには通常影響ありません。ただし、\fB-p\fR オプションを省略し、\fB-m\fR を使って \fItsuprilim\fR の値を \fItsupri\fR 未満に設定しようとした場合は例外です。このような設定を試みると、\fItsupri\fR は現在の \fItsuprilim\fR の値に設定されます。あるプロセスを他のクラスから タイムシェアリングクラスに変更する際に いずれかのオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。\fItsuprilim\fR のデフォルト値は \fB0\fR です。\fItsupri\fR のデフォルト値は、現在設定されている \fItsuprilim\fR の値です。 .sp .LP \fBfork\fR(2) や \fBexec\fR(2) などのシステムコールを使った場合、タイムシェアリングユーザー優先度 およびユーザー優先度の制限値は受け継がれます。 .SS "対話型クラス" .sp .LP 対話型のスケジューリング方針とは、\fBCPU\fR の消費に関して異なった性質を持つプロセスに対して、公平で有効な \fBCPU\fR リソースの割り付けを行い、さらに対話用に速いレスポンスを提供することです。対話型方針の目的は、対話型プロセスには速いレスポンスを提供し、\fBCPU\fR 消費型のジョブには高いスループットを提供することにあります。対話型クラスにある処理の優先順位は、タイムシェアリングクラスにある処理と同じように変更できます。ただし、修正された優先順位はユーザーとの対話の速い応答性を 提供するために継続します。 .sp .LP 対話型クラスのユーザー優先度の制限値 \fIiauprilim\fR は \fItsuprilim\fR と同等です。対話型クラスの、プロセスごとのユーザー優先度 \fIiaupri\fR は \fItsupri\fR と同等です。 .sp .LP \fIiamode\fR (対話型モード) のビットが設定されている対話型クラスのプロセスには、最優先度を示す値 \fB10\fR が割り当てられます。この値を持つプロセスは、優先度の計算が行われるとき、つまり、プロセスの優先度が再調整されるたびに、そのプロセスのユーザーモード優先度に組み込まれます。この機能は、X ウィンドウシステムで使用されています。X ウィンドウシステムでは、このビットを現在アクティブなウィンドウ内で実行中のプロセスに割り当てて、そのプロセスにより高い優先度を与えています。 .SS "公平共有クラス (FSS クラス)" .sp .LP フェアシェアのスケジューリング方針とは、所有するプロセスの数に関係なく、各プロジェクト間に公平に \fBCPU\fR リソースを割り付けることです。プロジェクトには、\fBCPU\fR リソースの使用権を制御するための「割り当て数」が与えられます。一定時間ごとに CPU リソースの使用量が通知されるため、他のプロジェクトより使用量の多いプロジェクトの使用権は縮小され、使用量の少ないプロジェクトの使用権は拡大されます。\fBCPU\fR 時間は、各プロジェクトが所有するプロセスの数とは無関係に、プロジェクトごとの使用権に応じてスケジュールされます。 .sp .LP \fBFSS\fR スケジューリングクラスは、タイムシェアリングスケジューラとの互換性を保持するために、プロセス単位のユーザー優先度およびユーザー優先度上限という概念を取り入れています。フェアシェアスケジューラは、ユーザー優先順位の全領域について、均等な効果を提供することを目的としています。負の \fIfssupri\fR 値を持つプロセスには、通常より頻度の低いタイムスライスが配分され、正の \fIfssupri\fR 値を持つプロセスには、通常より頻度の高いタイムスライスが配分されます。ユーザー優先順位が割り当て数に影響することはありません。つまり、プロセスの \fIfssupri\fR 値を変更しても、そのプロセスの属するプロジェクト全体の \fBCPU\fR 使用量は変更されません。CPU 使用量に影響するものは、ほかのプロジェクトとの比較によって割り付けられる割り当て数の配分のみです。 .sp .LP フェアシェアクラス内のプロセスの優先順位は、タイムシェアリングクラスのプロセスの優先順位と同じ方法で変更できます。 .SS "固定優先度クラス(FX クラス)" .sp .LP 固定優先度クラスは、システムによってプロセスのスケジューリング優先度が調整されることなく、ユーザーまたはアプリケーションがプロセスのスケジューリング優先度を制御できる、優先度が固定された事前定義のスケジューリング方針を提供します。 .sp .LP 固定優先度クラスは、デフォルトではタイムシェアリングクラスとスケジューリング優先度の同じ範囲を共有しています。固定優先度クラスには、ユーザー優先度値 (\fIfxupri\fR) の範囲が与えられ、そのクラスに属するプロセスに割り当てることができます。ユーザー優先順位値の範囲は 0 から \fIx\fR までで、この \fIx\fR の値はリアルタイムクラスのスケジューラを 構成済みのシステムごとに設定可能であり、以下のコマンドを使って表示することができます。 .sp .in +2 .nf priocntl -l .fi .in -2 .sp .sp .LP ユーザー優先度の目的は、固定優先度クラスのプロセスのスケジューリングを、ユーザーやアプリケーションが制御できるようにすることにあります。固定優先度クラスのプロセスに関して、\fIfxupri\fR の値はプロセスのスケジューリング優先度と実用上同じです。固定優先度のあるプロセスの、同じクラス内の他のプロセスに対する 相対的なスケジューリング優先度値は、\fIfxupri\fR 値により決定されます。\fIfxupri\fR 値は数値で示され、大きい数が高い優先順位を表します。 .sp .LP \fBpriocntl\fR \fB-l\fR で表示される、システム全体でのユーザー優先度上限のほかに、プロセスごとにユーザー優先度上限 (\fIfxuprilim\fR) があります。この値は、プロセスの \fIfxupri\fR として設定できる最大の値を示します。 .sp .LP 固定優先度プロセスは、自身の (および同じユーザー \fIID\fR を持つ他のプロセスの) \fBfxuprilim\fR 値を下げることができます。\fIfxuprilim\fR 値を上げることができるのは、スーパーユーザー特権を持つプロセスだけです。あるプロセスのクラスを固定優先度から他のクラスに変更する場合、\fIfxuprilim\fR の初期値を 0 より大きい値に設定するには、スーパーユーザー特権が必要となります。 .sp .LP どの固定優先度プロセスも、自身の (および同じユーザー \fIID\fR を持つ他のプロセスの) \fBfxupri\fR 値を設定できますが、そのプロセスの \fIfxuprilim\fR 値を超えることはできません。\fIfxuprilim\fR を超える値に \fIfxupri\fR を設定しようとした場合、または \fIfxupri\fR 未満の値に \fIfxuprilim\fR を設定しようとした場合には、結果として \fIfxupri\fR が \fIfxuprilim\fR と等しい値に設定されます。 .sp .LP \fBpriocntl\fR は、優先度に関する制御権だけでなく、固定優先度クラス中のプロセスに割り当てられるタイムクアンタムを制御する権利も提供しています。このタイムクアンタム値は、プロセスがリソースやイベントの待ち状態 (休眠状態) に陥らないという前提で、プロセスの実行時間の最大値を指定するものです。\fB\fRなお、あるプロセスの稼動中に、より高い優先度を持つ他のプロセスが 実行可能状態になった場合、現在稼動中のプロセスは割り当てられたタイムクアンタムに達していなくても 取り上げられてしまうことがあります。 .sp .LP 固定優先度クラス用の \fBpriocntl\fR \fB-s\fR または \fBpriocntl\fR \fB-e\fR コマンドには、\fB-m\fR、\fB-p\fR、および \fB-t\fR を任意の組み合わせで指定できます。どれかを省略した場合、当該プロセスが現在固定優先度であれば、省略されたオプションに対応したパラメータには影響ありません。ただし、\fB-p\fR を省略して、\fB-m\fR オプションで \fIfxuprilim\fR の値を現在の \fIfxupri\fR の値より小さな値に設定した場合は例外です。この場合、\fIfxupri\fR は、設定された \fIfxuprilim\fR の値と同じ値になります。あるプロセスを他のクラスから固定優先度クラスに変更するときにオプションを省略すると、そのオプションに対応したパラメータはデフォルト値に設定されます。\fIfxuprilim\fR のデフォルト値は \fB0\fR です。\fIfxupri\fR の値は、設定されている \fIfxuprilim\fR の値とデフォルトで同じになります。タイムクアンタムのデフォルトは、設定されている \fIfxupri\fR の値およびシステムの構成により異なります\fBfx_dptbl\fR(4) を参照してください。 .sp .LP 固定優先度クラス内のプロセスのタイムクアンタムは、リアルタイムクラスのプロセスのタイムクアンタムと同じ方法で変更できます。 .sp .LP \fBfork\fR(2) や \fBexec\fR(2) などのシステムコールを使った場合、固定優先度のユーザー優先度、ユーザー優先度上限、およびタイムクアンタムは、これらのシステムコールに受け継がれます。 .SH 使用例 .sp .LP リアルタイムクラスの例を示します。 .LP \fB例 1 \fRクラスを設定する .sp .LP \fIidtype\fR と \fIidlist\fR で指定された非リアルタイムのプロセスのクラスを リアルタイムに変更し、リアルタイム優先度値をデフォルトの \fB0\fR に設定します。現在リアルタイムクラスに属しているプロセスの リアルタイム優先順位値は変わりません。指定されたプロセスのタイムクアンタムは、すべて \fB1/10\fR 秒に設定されます。 .sp .in +2 .nf example% priocntl -s -c RT -t 1 -r 10 -i \fIidtype idlist\fR .fi .in -2 .sp .LP \fB例 2 \fRリアルタイムでコマンドを実行する .sp .LP \fIcommand\fR で指定したコマンドをリアルタイムクラスで実行します。リアルタイム優先度値は \fB5\fR で、タイムクアンタムは \fB20\fR ミリ秒となります。 .sp .in +2 .nf example% priocntl -e -c RT -p 15 -t 20 \fIcommand\fR .fi .in -2 .sp .LP \fB例 3 \fR時間シグナルを指定して、リアルタイムでコマンドを実行する .sp .LP \fIcommand\fR で指定したコマンドをリアルタイムクラスで実行します。リアルタイム優先度値は \fB11\fR 、タイムクアンタムは \fB250\fR ミリ秒で、リアルタイム時間シグナルは \fBSIGXCPU\fR となります。 .sp .in +2 .nf example% priocntl -e -c RT -p 11 -t 250 -q XCPU \fIcommand\fR .fi .in -2 .sp .sp .LP タイムシェアリングクラスの例を示します。 .LP \fB例 4 \fR非タイムシェアリングプロセスのクラスを設定する .sp .LP \fIidtype\fR と \fIidlist\fR で指定した非タイムシェアリングのプロセスのクラスを タイムシェアリングに変更し、ユーザー優先度値と優先度制限値を \fB0\fR に設定します。現在タイムシェアリングクラスに属しているプロセスには 影響を与えません。 .sp .in +2 .nf example% priocntl -s -c TS -i \fIidtype idlist\fR .fi .in -2 .sp .LP \fB例 5 \fRタイムシェアリングクラスでコマンドを実行する .sp .LP \fIcommand\fR で指定したコマンドを、\fIarguments\fR で指定した引数を使ってタイムシェアリングクラスで実行します。ユーザー優先度の制限値は \fB0\fR で、ユーザー優先度は \fB-15\fR となります。 .sp .in +2 .nf example% priocntl -e -c TS -m 0 -p \fB-15\fR \fIcommand\fR [\fIarguments\fR] .fi .in -2 .sp .LP \fB例 6 \fR固定優先度クラスでコマンドを実行する .sp .LP \fBcommand\fR で指定したコマンドを固定優先度クラスで実行します。ユーザー優先度値上限は \fB20\fR、ユーザー優先度は \fB10\fR で、タイムクアンタムは 250 ミリ秒となります。 .sp .in +2 .nf example% priocntl -e -c FX -m 20 -p 10 -t 250 command .fi .in -2 .sp .LP \fB例 7 \fR特定の LWP の優先度の変更 .sp .LP 次の例では、プロセス \fB500\fR の LWP \fB5\fR のユーザー優先度制限に \fB20\fR、ユーザー優先度に \fB15\fR を設定します。 .sp .in +2 .nf example% priocntl -s -m 20 -p 15 500/5 .fi .in -2 .sp .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .LP \fB-d\fR 、\fB-l\fR 、\fB-s\fR オプションの場合: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .sp .6 .RS 4n 正常終了。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .sp .6 .RS 4n エラーが発生しました。 .RE .sp .LP \fB-e\fR オプションの場合: .sp .LP 正常終了を表す、実行されたコマンドの終了ステータスが返されます。それ以外の場合は、次のステータスが返されます。 .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .sp .6 .RS 4n コマンドは指定された優先度で実行できなかった。 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os _ CSI有効 .TE .SH 関連項目 .sp .LP \fBkill\fR(1), \fBnice\fR(1), \fBps\fR(1), \fBdispadmin\fR(1M), \fBexec\fR(2), \fBfork\fR(2), \fBpriocntl\fR(2), \fBfx_dptbl\fR(4), \fBprocess\fR(4), \fBrt_dptbl\fR(4), \fBattributes\fR(5), \fBzones\fR(5), \fBFSS\fR(7) .sp .LP \fIIntroduction to Oracle Solaris 11.3 Administration\fR .SH 診断 .sp .LP \fBpriocntl\fR は次に示すエラーメッセージを出力します。 .sp .ne 2 .mk .na \fB\fBProcess(es) not found\fR\fR .ad .sp .6 .RS 4n 指定されたプロセスが 1 つも存在しません。 .RE .sp .ne 2 .mk .na \fB\fBSpecified processes from different classes\fR\fR .ad .sp .6 .RS 4n \fB-s\fR オプションを使ってパラメータを設定しようとしたが、\fB-c\fR \fIclass\fR オプションが省略されていて、複数のクラスのプロセスが指定されていました。 .RE .sp .ne 2 .mk .na \fB\fBInvalid option or argument\fR\fR .ad .sp .6 .RS 4n 指定されたオプションまたは引数の中に、認識できないものまたは不正なものがあります。 .RE