project 文件是工作负荷分层结构的核心。project 数据库是在系统中通过 /etc/project 文件或在网络上通过名称服务(如 NIS 或 LDAP)来维护的。
/etc/project 文件包含五个标准项目。
此项目用于所有系统进程和守护进程。
所有的根进程都在 user.root 项目中运行。
此特殊项目用于 IPQoS。
缺省项目会指定给每个用户。
此项目用于 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 结构成员包括以下各项:
项目的名称。
项目 ID。
用户提供的项目说明。
指向项目用户成员的指针。
指向项目组成员的指针。
项目属性。使用这些属性可为资源控制和项目池设置值。
通过项目属性,可以控制资源的使用情况。可以使用四种前缀对各种类型的资源控制属性进行分组:
project.*-此前缀表示用于控制项目的属性。例如,project.max-device-locked-memory 可指明所允许的锁定内存总量(以字节数表示)。project.pool 属性将项目绑定到资源池。请参见第 6 章,动态资源池。
task.*-此前缀用于应用于任务的属性。例如,task.max-cpu-time 属性设置此任务进程可用的最长 CPU 时间(以秒数表示)。
process.*-此前缀用于进程控制项。例如,process.max-file-size 控制项设置可由此进程写入的最大文件偏移量(以字节数表示)。
zone.*-zone.* 前缀适用于区域中的项目、任务和进程。例如,zone.max-lwps 可以防止一个区域中有过多 LWP 影响其他区域。可以使用 project.max-lwps 的各项在区域内的各个项目之间进一步细分区域的所有 LWP。
有关资源控制的完整列表,请参见 resource_controls(5)。