系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

设置资源控制

Procedure如何为项目中的每个任务设置最大 LWP 数

此过程将名为 x-files 的项目添加到 /etc/project 文件,并为在此项目中创建的任务设置最大 LWP 数。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 K 选项的 -projadd 命令创建名为 x-files 的项目。将在此项目中创建的每个任务的最大 LWP 数设置为 3


    # projadd -K 'task.max-lwps=(privileged,3,deny)' x-files
    
  3. 使用以下方法之一查看 /etc/project 文件中的条目:

    • 键入


      # projects -l
      system
              projid : 0
              comment: ""
              users  : (none)
              groups : (none)
              attribs: 
      .
      .
      .
      x-files
              projid : 100
              comment: ""
              users  : (none)
              groups : (none)
              attribs: task.max-lwps=(privileged,3,deny)
    • 键入


      # cat /etc/project
      system:0:System:::
      .
      .
      .
      x-files:100::::task.max-lwps=(privileged,3,deny)

示例 7–1 会话样例

执行完此过程中的步骤后,如果超级用户在项目 x-files 中创建新任务(通过 newtask 加入项目),则无法在运行此任务时创建三个以上的 LWP。以下带有注释的会话样例显示了这一原则。


# newtask -p x-files csh

# prctl -n task.max-lwps $$
process: 111107: csh
NAME    PRIVILEGE    VALUE    FLAG   ACTION            RECIPIENT
task.max-lwps
        privileged       3       -   deny                      -
        system       2.15G     max   deny                      -
# id -p
uid=0(root) gid=1(other) projid=100(x-files)

# ps -o project,taskid -p $$
 PROJECT TASKID
 x-files    73

# csh        /* creates second LWP */

# csh        /* creates third LWP */

# csh        /* cannot create more LWPs */
Vfork failed
#

Procedure如何对一个项目设置多个控制

/etc/project 文件可以包含每个项目的多个资源控制设置,还可包含每个控制的多个阈值。阈值在操作子句中定义,这些子句使用逗号分隔多个值。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -s-K 选项的 projmod 命令对项目 x-files 设置资源控制:


    # projmod -s -K 'task.max-lwps=(basic,10,none),(privileged,500,deny);
    process.max-file-descriptor=(basic,128,deny)' x-filesone line in file
    

    将设置以下控制:

    • 针对每个任务的最大 LWP 数不采取任何操作的 basic 控制。

    • 针对每个任务的最大 LWP 数的特权 deny 控制。此控制会使所有超过最大值的 LWP 创建都失败,如前一示例如何为项目中的每个任务设置最大 LWP 数所示。

    • basic 级别对每个进程的最大文件描述符数的限制,它会强制任何超过最大数量的 open 调用均失败。

  3. 使用以下方法之一,查看文件中的条目:

    • 键入


      # projects -l
      .
      .
      .
      x-files
              projid : 100
              comment: ""
              users  : (none)
              groups : (none)
              attribs: process.max-file-descriptor=(basic,128,deny)
                       task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file
      
    • 键入


      # cat etc/project
      .
      .
      .
      x-files:100::::process.max-file-descriptor=(basic,128,deny);
      task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file