项目是指 FSS 调度程序中的工作负荷容器。为项目指定的用户组被视为单个可控制块。请注意,您可以为单个用户创建具有自身份额数的项目。
用户可以是多个指定了不同份额数的项目的成员。通过将进程从一个项目移动到另一个项目,可以为进程指定不同的 CPU 资源量。
有关 project(4) 数据库和名称服务的更多信息,请参见project 数据库。
CPU 份额配置作为 project 数据库的一个属性由名称服务来管理。
当通过 setproject(3PROJECT) 库函数创建与项目关联的第一个任务(或进程)时,会将在 project 数据库中定义为资源控制 project.cpu-shares 的 CPU 份额数传递给内核。尚未定义 project.cpu-shares 资源控制的项目将被指定一个份额。
在以下示例中,/etc/project 文件中的这一条目将项目 x-files 的份额数设置为 5:
x-files:100::::project.cpu-shares=(privileged,5,none) |
如果在进程运行时改变了分配给数据库中某个项目的 CPU 份额数,则此时将不会修改此项目的份额数。为使更改生效,必须重新启动项目。
如果您要临时更改为项目指定的份额数而不在 project 数据库中改变此项目的属性,请使用 prctl 命令。例如,要在与项目 x-files 关联的进程运行时将此项目的 project.cpu-shares 资源控制值更改为 3,请键入以下命令:
# prctl -r -n project.cpu-shares -v 3 -i project x-files |
有关更多信息,请参见 prctl(1) 手册页。
替换命名资源控制的当前值。
指定资源控制的名称。
指定资源控制的值。
指定下一个参数的 ID 类型。
指定更改的对象。在此实例中,对象为项目 x-files。
项目 ID 为 0 的项目 system 中包括所有由引导时初始化脚本启动的系统守护进程。可以将 system 视为具有无限多个份额的项目。这意味着,无论为其他项目提供多少份额,始终先调度 system。如果您不希望 system 项目具有无限的份额,则可以在 project 数据库中为此项目指定一个份额数。
如前所述,属于零份额项目的进程的系统优先级始终为 0。具有一个或多个份额的项目以 1 或更高的优先级运行。这样,仅当 CPU 资源可用(即非零份额项目没有请求 CPU 资源)时,才会调度零份额项目。
可以为一个项目指定的最大份额数为 65535。