分类:
2008-04-09 18:55:59
配置池
第13 章• 管理动态资源池(任务) 155
查看可读形式的配置文件的内容。
请注意,配置中包含系统创建的缺省元素。
# 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
3
配置池
156 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
4
配置池
第13 章• 管理动态资源池(任务) 157
(可选)要将动态配置复制到名为/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
5
1
2
3
4
5
配置池
158 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
配置池
第13 章• 管理动态资源池(任务) 159
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
配置池
160 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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(任务图)”。
6
7
1
配置池
第13 章• 管理动态资源池(任务) 161
修改池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
2
3
配置池
162 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
配置池
第13 章• 管理动态资源池(任务) 163
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
配置池
164 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
4
5
1
2
3
4
5
配置池
第13 章• 管理动态资源池(任务) 165
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 localitynone
cpu
配置池
166 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
配置池
第13 章• 管理动态资源池(任务) 167
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 localitynone
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
配置池
168 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
在/etc/pooladm.conf 中提交配置。
# pooladm -c
(可选)要将动态配置复制到名为/tmp/backup 的静态配置文件,请键入以下命令:
# pooladm -s /tmp/backup
如何设置poold 日志级别
要指定poold 生成的日志信息的级别,请在poold 配置中设置system.poold.log-level 属
性。poold 配置保存在libpool 配置中。有关信息,请参见第146 页中的“poold 日志信息
”、poolcfg(1M) 手册页和libpool(3LIB) 手册页。
您还可以在命令行中使用poold 命令,以指定poold 生成的日志信息的级别。
成为超级用户,或者承担包括进程管理配置文件的角色。
系统管理员角色包括进程管理配置文件。有关如何创建角色并将角色指定给用户的信息,
请参见《系统管理指南:安全性服务》中的“管理RBAC(任务图)”。
使用带有-l 选项以及参数(如INFO)的poold 命令设置日志级别。
# /usr/lib/pool/poold -l INFO
有关可用参数的信息,请参见第146 页中的“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”。
6
7
1
2
1
2
配置池
第13 章• 管理动态资源池(任务) 169
执行命令:
# /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’
在处理器集之间移动CPU 的替换方法
如果要传送资源类型的特定已知ID,请提供其他语法。例如,以下命令为pset_large 处理
器集指定ID 分别为0 和2 的两个CPU:
# poolcfg -dc "transfer to pset pset_large (cpu 0; cpu 2)"
疑难解答
如果由于没有足够的资源可满足请求或者无法找到指定的ID 而使传送失败,则系统将显示
一条错误消息。
激活和删除池配置
使用pooladm 命令可以激活特定的池配置或删除当前活动的池配置。有关此命令的更多信
息,请参见pooladm(1M) 手册页。
3
1
2
示例13–1
更多信息
传送资源
170 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
如何激活池配置
要激活缺省配置文件/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 选项可从动态配置中删除所有用户自定义的元素。所有资源将恢复到其缺省
状态,并且所有池绑定将替换为与缺省池的绑定。
1
2
3
1
2
1
2
激活和删除池配置
第13 章• 管理动态资源池(任务) 171
在处理器集中混合调度类
您可以在同一处理器集中安全地混合TS 和IA类中的进程。在一个处理器集中混合其他调
度类可能会导致不可预测的结果。如果使用pooladm -x 导致在一个处理器集中出现混合调
度类,请使用priocntl 命令将运行的进程移动到其他调度类。请参见第113 页中的“如何
将进程从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 池。
更多信息
1
2
3
设置池属性并绑定到池
172 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
成为超级用户,或者承担包括进程管理配置文件的角色。
系统管理员角色包括进程管理配置文件。有关如何创建角色并将角色指定给用户的信息,
请参见《系统管理指南:安全性服务》中的“管理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 和池绑定。
1
2
1
2
1
2
设置池属性并绑定到池
第13 章• 管理动态资源池(任务) 173
使用poolstat 报告与池相关的资源统计信息
poolstat 命令用于显示与池相关的资源统计信息。有关更多信息,请参见第150 页中的“
使用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
使用poolstat 报告与池相关的资源统计信息
174 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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
使用poolstat 报告与池相关的资源统计信息
第13 章• 管理动态资源池(任务) 175
176
资源管理配置示例
本章概述了资源管理框架,并介绍虚拟的服务器整合项目。
本章包含以下主题:
第177 页中的“要整合的配置”
第178 页中的“整合配置”
第178 页中的“创建配置”
第180 页中的“查看配置”
要整合的配置
在此示例中,要将五个应用程序整合到单个系统中。目标应用程序具有不同的资源需求、
用户群和体系结构。当前,每个应用程序都位于旨在满足应用程序要求的专用服务器上。
下表介绍了各个应用程序及其特征。
应用程序说明特征
应用程序服务器CPU 超过2 个时,可伸缩性会降低
应用程序服务器的数据库实例超负荷的事务处理
测试和开发环境中的应用程序服务器基于GUI,并且执行未经测试的代码
事务处理服务器主要顾虑是响应时间
独立数据库实例处理大量事务并为多个时区提供服务
14 第1 4 章
177
整合配置
以下配置用于将应用程序整合到单个系统中。
应用程序服务器具有一个双CPU 的处理器集。
将应用程序服务器的数据库实例和独立数据库实例整合到一个至少具有四个CPU 的处
理器集中。保证为独立数据库实例留出75% 的资源。
测试和开发应用程序服务器需要IA调度类,以确保UI 的响应。对内存强加限制,以减
轻错误代码造成的影响。
将事务处理服务器指定给一个至少具有两个CPU 的专用处理器集,以最大程度地缩短
响应时间。
此配置适用于执行和占用每个资源集中的处理器时钟周期的已知应用程序。因此,可以建
立约束,以便将处理器资源转移到需要资源的集中。
wt-load 目标设置为允许高利用率资源集比低利用率资源集获得更多的资源分配。
locality 目标设置为tight,这用于最大化处理器的邻近性。
此外还应用了其他约束,以防止利用率超过任何资源集的80%。此约束确保应用程序可以
访问所需的资源。此外,对于事务处理器集,保持利用率低于80% 的目标的重要性是指定
的任何其他目标的两倍。这种重要性将在配置中定义。
创建配置
编辑/etc/project 数据库文件。添加条目以实现所需的资源控制并将用户映射到资源池,
然后查看此文件。
# cat /etc/project
.
.
.
user.app_server:2001:Production Application Server:::project.pool=appserver_pool
user.app_db:2002:App Server DB:::project.pool=db_pool;project.cpu-shares=(privileged,1,deny)
development:2003:Test and development::staff:project.pool=dev_pool;
process.max-address-space=(privileged,536870912,deny) keep with previous line
user.tp_engine:2004:Transaction Engine:::project.pool=tp_pool
user.geo_db:2005:EDI DB:::project.pool=db_pool;project.cpu-shares=(privileged,3,deny)
整合配置
178 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
.
.
.
注– 开发小组必须执行开发项目中的任务,因为对此项目的访问基于用户的组ID (group ID,
GID)。
创建名为pool.host 的输入文件,此文件将用于配置所需的资源池。查看此文件。
# cat pool.host
create system host
create pset dev_pset (uint pset.min = 0; uint pset.max = 2)
create pset tp_pset (uint pset.min = 2; uint pset.max=8)
create pset db_pset (uint pset.min = 4; uint pset.max = 6)
create pset app_pset (uint pset.min = 1; uint pset.max = 2)
create pool dev_pool (string pool.scheduler="IA")
create pool appserver_pool (string pool.scheduler="TS")
create pool db_pool (string pool.scheduler="FSS")
create pool tp_pool (string pool.scheduler="TS")
associate pool dev_pool (pset dev_pset)
associate pool appserver_pool (pset app_pset)
associate pool db_pool (pset db_pset)
associate pool tp_pool (pset tp_pset)
modify system tester (string system.poold.objectives="wt-load")
modifypset dev_pset (string pset.poold.objectives="localitytight; utilization < 80")
modifypset tp_pset (string pset.poold.objectives="localitytight; 2: utilization < 80")
modifypset db_pset (string pset.poold.objectives="localitytight;utilization < 80")
以上文章转自于 : http://developers.sun.com.cn/