Go to main content
リソース管理および Oracle® Solaris ゾーン開発者ガイド

印刷ビューの終了

更新: 2016 年 11 月
 
 

プロジェクトおよびタスクの概要

Oracle Solaris オペレーティングシステムは、システム上で実行されている作業を編成するためにワークロード階層を使用します。タスクはプロセスの集まりであり、ワークロードのコンポーネントを表します。プロジェクトはタスクの集まりであり、ワークロード全体を表します。任意の時点で、1 つのプロセスは 1 つのタスクと 1 つのプロジェクトのみのコンポーネントになることができます。次の図に、ワークロード階層内の関係を示します。

図 2  ワークロード階層

image:図は、プロジェクト、タスク、およびプロセス間の関係を示しています。

複数のプロジェクトのメンバーであるユーザーは、同時に複数のプロジェクトのプロセスを実行できます。

プロセスによって起動されるプロセスはすべて、親プロセスによって作成されたプロジェクトとタスクを継承します。起動スクリプトで新しいプロジェクトに切り替えると、すべての子プロセスが新しいプロジェクトで実行されます。

実行中のユーザープロセスには、ユーザー ID (uid)、グループ ID (gid)、およびプロジェクト ID (projid) が関連付けられています。プロセスの属性と機能は、ユーザー、グループ、およびプロジェクト ID から継承されて、タスクの実行コンテキストを形成します。

プロジェクトおよびタスクの詳細は、Oracle Solaris 11.3 でのリソースの管理 の 第 2 章, プロジェクトとタスクについてを参照してください。プロジェクトおよびタスクを管理するための管理コマンドについては、Oracle Solaris 11.3 でのリソースの管理 の 第 3 章, プロジェクトとタスクの管理を参照してください。

/etc/project ファイル

project ファイルはワークロード階層の中心的な機能です。project データベースは、/etc/project ファイルを介してシステム上で、または NIS や LDAP などのネーミングサービスを介してネットワーク上で保持されます。

/etc/project ファイルには 5 つの標準プロジェクトが含まれます。

system

このプロジェクトは、すべてのシステムプロセスおよびデーモンに使用されます。

user.root

root のログインおよび root の cronat、および batch ジョブにより発生する、すべての root プロセス。

noproject

この特別なプロジェクトは IPQoS 用です。

default

各ユーザーにデフォルトプロジェクトが割り当てられます。

group.staff

このプロジェクトはグループ staff のすべてのユーザーに使用されます。

プログラムからプロジェクトファイルにアクセスするには、次の構造体を使用します。

struct project {
  char      *pj_name;       /* name of the project */
  projid_t   pj_projid;     /* numerical project ID */
  char      *pj_comment;    /* project comment */
  char     **pj_users;      /* vector of pointers to project user names */
  char     **pj_groups;     /* vector of pointers to project group names */
  char      *pj_attr;       /* project attributes */
};

project 構造体のメンバーには、次のものがあります。

*pj_name

プロジェクトの名前。

pj_projid

プロジェクト ID。

*pj_comment

ユーザー指定のプロジェクトの説明。

**pj_users

プロジェクトのユーザーメンバーのポインタ。

**pj_groups

プロジェクトのグループメンバーのポインタ。

*pj_attr

プロジェクトの属性。これらの属性は、リソース制御とプロジェクトプールの値を設定するために使用します。

リソース使用率は、プロジェクトの属性を介して制御するか、ゾーンの場合は zonecfg コマンドを使用して構成できます。リソース制御属性のタイプは 4 つの接頭辞を使用してグループ化されています。

  • project.* – この接頭辞は、プロジェクトを制御するために使用される属性を示します。たとえば、project.max-locked-memory は、ロックされるメモリーの許容合計量をバイト数で示します。project.pool 属性は、プロジェクトをリソースプールにバインドします。リソースプールを参照してください。

  • task.* – この接頭辞は、タスクに適用される属性に使用されます。たとえば、task.max-cpu-time 属性は、このタスクのプロセスで使用できる最大 CPU 時間を秒数で表現します。

  • process.* – この接頭辞は、プロセス制御に使用されます。たとえば、process.max-file-size 制御は、このプロセスでの書き込みに使用できる最大ファイルオフセットをバイト数で表現します。

  • zone.*zone.* 接頭辞は、ゾーン内のプロジェクト、タスク、およびプロセスに適用されるゾーン規模のリソース制御を示します。たとえば、zone.max-lwps は、あるゾーンの LWP の数が増えすぎてほかのゾーンに影響を与えることを防ぎます。ゾーンの LWP の合計数は、project.max-lwps エントリを使用すると、ゾーン内のプロジェクト間でさらに再分割できます。

リソース制御の完全なリストについては、resource-controls(5) を参照してください。