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

配置池

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