您的位置:首页 > 其它

[Solaris]动态资源管理

2007-08-07 15:24 323 查看

管理动态资源池(任务)

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

有关资源池的背景信息,请参见第 12 章,动态资源池(概述)

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

[thead]
[/thead]

任务

说明

参考

启用资源池功能。

激活系统上的资源池框架。

如何启用池

禁用资源池功能。

禁用系统上的资源池框架。

如何禁用池

创建静态资源池配置。

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

如何创建静态配置

修改资源池配置。

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

如何修改配置

将资源池与调度类关联。

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

如何将池与调度类关联

定义配置目标。

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

如何定义配置目标

设置日志级别。

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

如何设置 poold 日志级别

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

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

如何通过 poolcfg 使用命令文件

在内核中传送资源。

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

传送资源

激活池配置。

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

如何激活池配置

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

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

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

删除系统中的池配置。

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

如何删除池配置

将进程绑定到池。

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

如何将进程绑定到池

将任务或项目绑定到池。

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

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

将新进程绑定到资源池。

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

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

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

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

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

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

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

按特定间隔生成多个报告

报告资源集统计信息。

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

报告资源集统计信息

启用和禁用池功能

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


启用池功能以对池进行处理




禁用池功能以便不能对池进行处理





如何启用池

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

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





启用池功能。

# pooladm -e



如何禁用池

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

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





禁用池功能。

# pooladm -d

配置池



如何创建静态配置

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

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

注 –
创建与动态配置相匹配的新配置时,应优先使用新功能 pooladm -s,而不使用以前的功能 poolcfg -c discover。

开始之前
在系统上启用池。


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

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





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

# pooladm -s

查看可读形式的配置文件的内容。

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

# 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

在 /etc/pooladm.conf 中提交配置。

# pooladm -c

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

# pooladm -s /tmp/backup



如何修改配置

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

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


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

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





创建处理器集 pset_batch。

# poolcfg -c 'create pset pset_batch (uint pset.min = 2; uint pset.max = 10)'

创建池 pool_batch。

# poolcfg -c 'create pool pool_batch'

使用关联连接池和处理器集。

# poolcfg -c 'associate pool pool_batch (pset pset_batch)'

显示已编辑的配置。

# 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

在 /etc/pooladm.conf 中提交配置。

# pooladm -c

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

# pooladm -s /tmp/backup



如何将池与调度类关联

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


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

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





修改池 pool_batch 以便与 FSS 关联。

# poolcfg -c 'modify pool pool_batch (string pool.scheduler="FSS")'

显示已编辑的配置。

# 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

在 /etc/pooladm.conf 中提交配置:

# pooladm -c

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

# pooladm -s /tmp/backup



如何定义配置目标

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

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


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

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





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

# poolcfg -c 'modify system tester (string system.poold.objectives="wt-load")'

禁用缺省处理器集的 locality 目标。

# poolcfg -c 'modify pset pset_default (string pset.poold.objectives="locality none")'one line

禁用 pset_batch 处理器集的 locality 目标。

# poolcfg -c 'modify pset pset_batch (string pset.poold.objectives="locality none")'one line

显示已编辑的配置。

# 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

在 /etc/pooladm.conf 中提交配置。

# pooladm -c

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

# pooladm -s /tmp/backup



如何设置 poold 日志级别

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

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


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

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





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

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

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





如何通过 poolcfg 使用命令文件

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

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


创建输入文件 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)

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

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





执行命令:

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

传送资源

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

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



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

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

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





将两个 CPU 从 pset1 移动到 pset2。

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

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

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

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

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

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

激活和删除池配置

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



如何激活池配置

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


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

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





在 /etc/pooladm.conf 中提交配置。

# pooladm -c

(可选)将动态配置复制到静态配置文件,例如 /tmp/backup。

# pooladm -s /tmp/backup



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

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

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


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

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





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

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



如何删除池配置

要删除当前活动配置并将所有关联的资源(如处理器集)返回到其缺省状态,请使用 -x 选项(用于“删除配置”)。


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

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





删除当前活动配置。

# pooladm -x

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



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

设置池属性并绑定到池

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

您可以使用两种方法将运行的进程绑定到池:


可以使用 poolbind(1M) 手册页中介绍的 poolbind 命令将特定进程绑定到命名的资源池。




可以使用 project 数据库中的 project.pool 属性来标识通过 newtask 命令启动的新登录会话或任务的池绑定。请参见 newtask(1)projmod(1M)project(4) 手册页。





如何将进程绑定到池

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


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

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





将进程手动绑定到池:

# poolbind -p ohare $

使用带有 -q 选项的 poolbind 验证进程的池绑定。

$ poolbind -q $

155509 ohare

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





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

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


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

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





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

# poolbind -i project -p laguardia airmiles



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

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


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

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





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

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



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

假设配置中具有两个名为 studio 和 backstage 的池。/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 池。


在 passes 项目中启动进程。

$ newtask -l -p passes

使用带有 -q 选项的 poolbind 命令验证进程的池绑定。

$ 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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: