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

第 13 章 创建和管理资源池(任务)

本章介绍如何设置和管理系统上的资源池。

有关资源池的背景信息,请参见第 12 章

管理动态资源池(任务图)

任务 

说明 

参考 

启用或禁用资源池。 

激活或禁用系统上的资源池。 

启用和禁用池功能

启用或禁用动态资源池。 

激活或禁用系统上的动态资源池功能。 

启用和禁用池功能

创建静态资源池配置。 

创建与当前动态配置相匹配的静态配置文件。有关更多信息,请参见资源池框架

如何创建静态配置

修改资源池配置。 

修改系统上的池配置(例如通过创建其他池)。 

如何修改配置

将资源池与调度类关联。 

将池与调度类关联,以便所有绑定到该池的进程都使用指定的调度程序。 

如何将池与调度类关联

设置配置约束和定义配置目标。 

poold 指定目标以考虑何时执行更正操作。有关配置目标的更多信息,请参见poold 概述

如何设置配置约束如何定义配置目标

设置日志级别。 

指定 poold 生成的日志信息的级别。

如何设置 poold 日志级别

通过 poolcfg 命令使用文本文件。

poolcfg 命令可以从文本文件提取输入。

如何通过 poolcfg 使用命令文件

在内核中传送资源。 

在内核中传送资源。例如,将具有特定 ID 的资源传送到目标集。 

传送资源

激活池配置。 

激活缺省配置文件中的配置。 

如何激活池配置

在提交池配置之前验证此配置。 

验证池配置,以测试验证时将发生的情况。 

如何在提交配置之前验证配置

删除系统中的池配置。 

将所有关联的资源(如处理器集)返回到其缺省状态。 

如何删除池配置

将进程绑定到池。 

手动将系统上运行的进程与资源池关联。 

如何将进程绑定到池

将任务或项目绑定到池。 

将任务或项目与资源池关联。 

如何将任务或项目绑定到池

将新进程绑定到资源池。 

要将项目中的新进程自动绑定到指定的池,请向 project 数据库中的每个条目添加一个属性。

如何设置项目的 project.pool 属性

使用 project 属性将进程绑定到其他池。

修改已启动的新进程的池绑定。 

如何使用 project 属性将进程绑定到其他池

使用 poolstat 实用程序生成报告。

在指定的间隔生成多个报告。 

按特定间隔生成多个报告

报告资源集统计信息。 

使用 poolstat 实用程序报告 pset 资源集的统计信息。

报告资源集统计信息

启用和禁用池功能

从 Solaris 10 11/06 发行版开始,您可以使用 svcadm(1M) 手册页中所述的 svcadm 命令在系统中启用和禁用资源池和动态资源池服务。

您还可以使用 pooladm(1M) 手册页中所述的 pooladm 命令执行以下任务:


注 –

在升级系统时,如果启用了资源池框架,而且 /etc/pooladm.conf 文件存在,则池服务将被启用,该文件中包含的配置将应用到系统中。


ProcedureSolaris 10 11/06 及更高版本:如何使用 svcadm 启用资源池服务

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 启用资源池服务。


    # svcadm enable system/pools:default
    

ProcedureSolaris 10 11/06 及更高版本:如何使用 svcadm 禁用资源池服务

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 禁用资源池服务。


    # svcadm disable system/pools:default
    

ProcedureSolaris 10 11/06 及更高版本:如何使用 svcadm 启用动态资源池服务

  1. 成为超级用户,或者承担包括服务管理权限配置文件的角色。

    角色包含授权和具有一定权限的命令。有关如何创建该角色并将其指定给用户的信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”和《系统管理指南:安全性服务》中的“管理 RBAC(任务列表)”。

  2. 启用动态资源池服务。


    # svcadm enable system/pools/dynamic:default
    

示例 13–1 动态资源池服务对资源池服务的依赖性

本示例表明,如果要运行 DRP,则必须首先启用资源池。

资源池和动态资源池之间存在相关性。DRP 现在是资源池的一项相关服务。DRP 可以独立于资源池单独启用和禁用。

以下显示表明,当前已禁用了资源池和动态资源池:


# svcs *pool*
STATE          STIME    FMRI
disabled       10:32:26 svc:/system/pools/dynamic:default
disabled       10:32:26 svc:/system/pools:default

启用动态资源池:


# svcadm enable svc:/system/pools/dynamic:default
# svcs -a | grep pool
disabled       10:39:00 svc:/system/pools:default
offline        10:39:12 svc:/system/pools/dynamic:default

请注意,DRP 服务仍处于脱机状态。

可使用 svcs 命令的 -x 选项确定 DRP 服务处于脱机状态的原因:


# svcs -x *pool*
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:39:00 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:39:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.

启用资源池服务,以便 DRP 服务可以运行:


# svcadm enable svc:/system/pools:default

在使用 svcs *pool* 命令时,系统将显示如下内容:


# svcs *pool*
STATE          STIME    FMRI
online         10:40:27 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default


示例 13–2 资源池服务禁用时对动态资源池的影响

如果这两种服务都联机,并且您禁用了资源池服务:


# svcadm disable svc:/system/pools:default 

在使用 svcs *pool* 命令时,系统将显示如下内容:


# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default
# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default

但最终,DRP 服务将转入 offline,原因是资源池服务已被禁用:


# svcs *pool*
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
offline        10:41:12 svc:/system/pools/dynamic:default

确定 DRP 服务处于脱机状态的原因:


# svcs -x *pool*
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:41:05 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:41:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.

必须启动资源池,DRP 才能工作。例如,可以使用带有 -e 选项的 pooladm 命令来启动资源池:


# pooladm -e

然后,svcs *pool* 命令显示以下内容:


# svcs *pool*
STATE          STIME    FMRI
online         10:42:23 svc:/system/pools:default
online         10:42:24 svc:/system/pools/dynamic:default

ProcedureSolaris 10 11/06 及更高版本:如何使用 svcadm 禁用动态资源池服务

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 禁用动态资源池服务。


    # svcadm disable system/pools/dynamic:default
    

Procedure如何使用 pooladm 启用资源池

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 启用池功能。


    # pooladm -e
    

Procedure如何使用 pooladm 禁用资源池

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 禁用池功能。


    # pooladm -d
    

配置池

Procedure如何创建静态配置

/usr/sbin/pooladm 使用 -s 选项可以创建与当前动态配置相匹配的静态配置文件。如果没有指定其他文件名,则使用缺省位置 /etc/pooladm.conf

使用带有 -c 选项的 pooladm 命令提交配置。然后,使用带有 -s 选项的 pooladm 命令更新静态配置,以便与动态配置的状态相匹配。


注 –

创建与动态配置相匹配的新配置时,应优先使用新功能 pooladm -s,再考虑使用以前的功能 poolcfg -c discover


开始之前

在系统上启用池。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 更新静态配置文件,以便与当前动态配置相匹配。


    # pooladm -s
    
  3. 查看可读形式的配置文件的内容。

    请注意,配置中包含系统创建的缺省元素。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
  4. 提交 /etc/pooladm.conf 中的配置。


    # pooladm -c
    
  5. (可选)要将动态配置复制到名为 /tmp/backup 的静态配置文件,请键入以下命令:


    # pooladm -s /tmp/backup
    

Procedure如何修改配置

要增强配置,请创建名为 pset_batch 的处理器集以及名为 pool_batch 的池。然后,使用关联连接池和处理器集。

请注意,必须用引号将包含空格的子命令参数括起来。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 创建处理器集 pset_batch


    # poolcfg -c 'create pset pset_batch (uint pset.min = 2; uint pset.max = 10)'
    
  3. 创建池 pool_batch


    # poolcfg -c 'create pool pool_batch'
    
  4. 使用关联连接池和处理器集。


    # poolcfg -c 'associate pool pool_batch (pset pset_batch)'
    
  5. 显示已编辑的配置。


    # poolcfg -c info
    system tester
            string  system.comment kernel state
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    pset pset_batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  6. 提交 /etc/pooladm.conf 中的配置。


    # pooladm -c
    
  7. (可选)要将动态配置复制到名为 /tmp/backup 的静态配置文件,请键入以下命令:


    # pooladm -s /tmp/backup
    

Procedure如何将池与调度类关联

您可以将池与调度类关联,以便所有绑定到该池的进程都可以使用此调度程序。为此,请将 pool.scheduler 属性设置为调度程序的名称。以下示例将池 pool_batch 与公平份额调度器 (fair share scheduler, FSS) 关联。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关如何创建该角色并将其指定给用户的信息,请参见《系统管理指南:安全性服务》中的“管理 RBAC(任务列表)”。

  2. 修改池 pool_batch 以便与 FSS 关联。


    # poolcfg -c 'modify pool pool_batch (string pool.scheduler="FSS")'
    
  3. 显示已编辑的配置。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    string pool.scheduler FSS
                    pset batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  4. 提交 /etc/pooladm.conf 中的配置:


    # pooladm -c
    
  5. (可选)要将动态配置复制到名为 /tmp/backup 的静态配置文件,请键入以下命令:


    # pooladm -s /tmp/backup
    

Procedure如何设置配置约束

约束通过删除一些可能会对配置进行的潜在更改来影响可能配置的范围。此过程显示如何设置 cpu.pinned 属性。

在以下示例中,cpuid 是一个整数。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 修改静态或动态配置中的 cpu.pinned 属性:

    • 修改引导时(静态)配置:


      # poolcfg -c 'modify cpu <cpuid> (boolean cpu.pinned = true)'
      
    • 不修改引导时配置而修改运行(动态)配置:


      # poolcfg -dc 'modify cpu <cpuid> (boolean cpu.pinned = true)'
      

Procedure如何定义配置目标

您可以为 poold 指定目标,以考虑何时执行更正操作。

在以下过程中,将设置 wt-load 目标,以便 poold 尝试将资源分配与资源利用率相匹配。禁用 locality 目标有助于实现此配置目标。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 修改系统 tester 以优先考虑 wt-load 目标。


    # poolcfg -c 'modify system tester (string system.poold.objectives="wt-load")'
    
  3. 禁用缺省处理器集的 locality 目标。


    # poolcfg -c 'modify pset pset_default (string pset.poold.objectives="locality none")'
    
  4. 禁用 pset_batch 处理器集的 locality 目标。


    # poolcfg -c 'modify pset pset_batch (string pset.poold.objectives="locality none")'
    
  5. 显示已编辑的配置。


    # poolcfg -c info
    system tester
            string  system.comment
            int     system.version 1
            boolean system.bind-default true
            int     system.poold.pid 177916
            string  system.poold.objectives wt-load
    
            pool pool_default
                    int     pool.sys_id 0
                    boolean pool.active true
                    boolean pool.default true
                    int     pool.importance 1
                    string  pool.comment 
                    pset    pset_default
    
            pset pset_default
                    int     pset.sys_id -1
                    boolean pset.default true
                    uint    pset.min 1
                    uint    pset.max 65536
                    string  pset.units population
                    uint    pset.load 10
                    uint    pset.size 4
                    string  pset.comment 
                    boolean testnullchanged true
                    string  pset.poold.objectives locality none
    
                    cpu
                            int     cpu.sys_id 3
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 2
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 1
                            string  cpu.comment 
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 0
                            string  cpu.comment 
                            string  cpu.status on-line
    
            pool pool_batch
                    boolean pool.default false
                    boolean pool.active true
                    int pool.importance 1
                    string pool.comment
                    string pool.scheduler FSS
                    pset batch
    
            pset pset_batch
                    int pset.sys_id -2
                    string pset.units population
                    boolean pset.default true
                    uint pset.max 10
                    uint pset.min 2
                    string pset.comment
                    boolean pset.escapable false
                    uint pset.load 0
                    uint pset.size 0
                    string  pset.poold.objectives locality none
    
                    cpu
                            int     cpu.sys_id 5
                            string  cpu.comment
                            string  cpu.status on-line
    
                    cpu
                            int     cpu.sys_id 4
                            string  cpu.comment
                            string  cpu.status on-line
  6. 提交 /etc/pooladm.conf 中的配置。


    # pooladm -c
    
  7. (可选)要将动态配置复制到名为 /tmp/backup 的静态配置文件,请键入以下命令:


    # pooladm -s /tmp/backup
    

Procedure如何设置 poold 日志级别

要指定 poold 生成的日志信息的级别,请在 poold 配置中设置 system.poold.log-level 属性。poold 配置保存在 libpool 配置中。有关信息,请参见poold 日志信息以及 poolcfg(1M)libpool(3LIB) 手册页。

您还可以在命令行中使用 poold 命令,以指定 poold 生成的日志信息的级别。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 使用带有 -l 选项以及参数(如 INFO)的 poold 命令设置日志级别。


    # /usr/lib/pool/poold -l INFO
    

    有关可用参数的信息,请参见poold 日志信息。缺省日志级别为 NOTICE

Procedure如何通过 poolcfg 使用命令文件

带有 -f 选项的 poolcfg 命令可以从包含 -c 选项的 poolcfg 子命令参数的文本文件提取输入。此方法适用于要执行一组操作的情况。当处理多个命令时,仅在所有命令都成功的情况下才会更新配置。对于庞大或复杂的配置,此技术比调用每个子命令更有用。

请注意,在命令文件中,# 字符用作注释标记,表示其后面的内容为注释。

  1. 创建输入文件 poolcmds.txt


    $ cat > poolcmds.txt
    create system tester
    create pset pset_batch (uint pset.min = 2; uint pset.max = 10)
    create pool pool_batch
    associate pool pool_batch (pset pset_batch)
    
  2. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关如何创建该角色并将其指定给用户的信息,请参见《系统管理指南:安全性服务》中的“管理 RBAC”。

  3. 执行命令:


    # /usr/sbin/poolcfg -f poolcmds.txt
    

传送资源

使用 poolcfg(带有 -d 选项)的 -c 选项的 transfer 子命令参数可以在内核中传送资源。-d 选项指定此命令直接对内核执行操作,而不从文件提取输入。

以下过程将两个 CPU 从内核中的处理器集 pset1 移动到处理器集 pset2

Procedure如何在处理器集之间移动 CPU

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 将两个 CPU 从 pset1 移动到 pset2

    可以按任意顺序使用 fromto 子句。每个命令只支持一个 tofrom 子句。


    # poolcfg -dc 'transfer 2 from pset pset1 to pset2'
    

示例 13–3 在处理器集之间移动 CPU 的替换方法

如果要传送资源类型的特定已知 ID,请提供其他语法。例如,以下命令为 pset_large 处理器集指定 ID 分别为 02 的两个 CPU:


# poolcfg -dc "transfer to pset pset_large (cpu 0; cpu 2)"

疑难解答

如果由于没有足够的资源可满足请求或者无法找到指定的 ID 而使传送失败,则系统将显示一条错误消息。

激活和删除池配置

使用 pooladm 命令可以激活特定的池配置或删除当前活动的池配置。有关此命令的更多信息,请参见 pooladm(1M) 手册页。

Procedure如何激活池配置

要激活缺省配置文件 /etc/pooladm.conf 中的配置,请调用带有 -c 选项(提交配置)的 pooladm

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 提交 /etc/pooladm.conf 中的配置。


    # pooladm -c
    
  3. (可选)将动态配置复制到静态配置文件,例如 /tmp/backup


    # pooladm -s /tmp/backup
    

Procedure如何在提交配置之前验证配置

您可以使用 -n 选项和 -c 选项来测试验证时将发生的情况。配置实际上将不会提交。

以下命令尝试验证 /home/admin/newconfig 中包含的配置。所有遇到的错误情况都将显示,但是不会修改配置本身。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 在提交配置之前测试此配置的有效性。


    # pooladm -n -c /home/admin/newconfig
    

Procedure如何删除池配置

要删除当前的活动配置并使所有的关联资源(如处理器集)都恢复为缺省状态,请使用表示“删除配置”的 -x 选项。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 删除当前活动配置。


    # pooladm -x
    

    -pooladmx 选项可从动态配置中删除所有用户定义的元素。所有资源将恢复到其缺省状态,并且所有池绑定将替换为与缺省池的绑定。

在处理器集中混合调度类

您可以在同一处理器集中安全地混合 TS 和 IA 类中的进程。在一个处理器集中混合其他调度类可能会导致不可预测的结果。如果使用 pooladm -x 导致在一个处理器集中出现混合调度类,请使用 priocntl 命令将运行的进程移至其他调度类。请参见如何将进程从 TS 类手动移至 FSS 类。另请参见 priocntl(1) 手册页。

设置池属性并绑定到池

可以设置 project.pool 属性,以便将资源池与项目关联。

可通过两种方法将正在运行的进程绑定到池:

Procedure如何将进程绑定到池

以下过程使用带有 -p 选项的 poolbind 将进程(在此例中为当前 shell)手动绑定到名为 ohare 的池。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. 将进程手动绑定到池:


    # poolbind -p ohare $$
    
  3. 使用带有 -q 选项的 poolbind 验证进程的池绑定。


    $ poolbind -q $$
    155509 ohare

    系统将显示进程 ID 和池绑定。

Procedure如何将任务或项目绑定到池

要将任务或项目绑定到池,请使用带有 -i 选项的 poolbind 命令。以下示例将 airmiles 项目中的所有进程绑定到 laguardia 池。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. airmiles 项目中的所有进程绑定到 laguardia 池。


    # poolbind -i project -p laguardia airmiles
    

Procedure如何设置项目的 project.pool 属性

您可以设置 project.pool 属性,以将项目的进程绑定到资源池。

  1. 成为超级用户,或者承担包括进程管理配置文件的角色。

    系统管理员角色包括进程管理配置文件。有关角色的更多信息,请参见《系统管理指南:基本管理》中的“使用 RBAC 和 Solaris 管理工具(任务图)”

  2. project.pool 属性添加到 project 数据库中的每个条目。


    # projmod -a -K project.pool=poolname project
    

Procedure如何使用 project 属性将进程绑定到其他池

假设配置中具有两个名为 studiobackstage 的池。/etc/project 文件具有以下内容:


user.paul:1024::::project.pool=studio
user.george:1024::::project.pool=studio
user.ringo:1024::::project.pool=backstage
passes:1027::paul::project.pool=backstage

使用此配置,可以在缺省情况下将用户 paul 启动的进程绑定到 studio 池。

用户 paul 可以为其启动的进程修改池绑定。paul 也可以使用 newtask,通过在 passes 项目中启动来将工作绑定到 backstage 池。

  1. passes 项目中启动进程。


    $ newtask -l -p passes
    
  2. 使用带有 -q 选项的 poolbind 命令验证进程的池绑定。还可使用双美元符号 ($$) 将父级 shell 的进程号传递给该命令。


    $ poolbind -q $$
    6384  pool backstage

    系统将显示进程 ID 和池绑定。

使用 poolstat 报告与池相关的资源统计信息

poolstat 命令用于显示与池相关的资源的统计信息。有关更多信息,请参见使用 poolstat 监视池功能和资源利用率和 poolstat(1M) 手册页。

以下各小节通过示例说明如何生成用于特定用途的报告。

显示缺省的 poolstat 输出

键入不带参数的 poolstat 将针对每个池输出一个标题行和一行信息。信息行将显示池 ID、池的名称以及连接到池的处理器集的资源统计信息。


machine% poolstat
                              pset
       id pool           size used load
        0 pool_default      4  3.6  6.2
        1 pool_sales        4  3.3  8.4

按特定间隔生成多个报告

以下命令按 5 秒的抽样间隔生成 3 个报告。


machine% poolstat 5 3
                               pset
 id pool                 size used load
 46 pool_sales              2  1.2  8.3
  0 pool_default            2  0.4  5.2
                              pset
 id pool                 size used load
 46 pool_sales              2  1.4  8.4
  0 pool_default            2  1.9  2.0
                              pset
 id pool                 size used load
 46 pool_sales              2  1.1  8.0
  0 pool_default            2  0.3  5.0  

报告资源集统计信息

以下示例使用带有 -r 选项的 poolstat 命令报告处理器集资源集的统计信息。请注意,资源集 pset_default 连接到多个池,因此此处理器集将针对每个池成员关系列出一次。


machine% poolstat -r pset
      id pool          type rid rset          min  max size used load
       0 pool_default  pset  -1 pset_default    1  65K    2  1.2  8.3
       6 pool_sales    pset   1 pset_sales      1  65K    2  1.2  8.3
       2 pool_other    pset  -1 pset_default    1  10K    2  0.4  5.2