Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1299610
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-09 18:51:54


配置资源控制和属性
第6 章• 资源控制(概述) 75
注– 在启用了区域的系统上,使用稍有不同的格式在区域配置中指定整个区域范围的资源控
制。有关更多信息,请参见第213 页中的“区域配置数据”。
使用rctladm 命令,可以对全局范围的资源控制功能进行运行时询问和修改。使用prctl 命
令,可以对本地范围的资源控制功能进行运行时询问和修改。
有关更多信息,请参见第80 页中的“针对资源控制值的全局和本地操作”、rctladm(1M)
和prctl(1)。
注– 在安装了区域的系统上,不能在非全局区域中使用rctladm 来修改设置。您可以在非全
局区域中使用rctladm 来查看每个资源控制的全局日志状态。
可用的资源控制
下表显示了此发行版中提供的标准资源控制的列表。
该表描述了每个控制约束的资源。表中还标识了project 数据库使用的该资源的缺省单位。
缺省单位有两种类型:
 数量代表有限数量。
 索引代表最大有效标识符。
因此,project.cpu-shares 指定了项目有权占用的份额数。process.max-file-descriptor
指定了可由open(2) 系统调用分配给进程的最高文件编号。
表6–1标准资源控制
控制名称说明缺省单位
project.cpu-shares 授予此项目的CPU 份额数,用
于公平共享调度程序(请参见
FSS(7))。
数量(份额)
project.max-crypto-memory libpkcs11 用于加速硬件加密的
内核内存总量。内核缓冲区分
配以及与会话相关的结构分配
都按照此资源控制执行。
大小(字节)
project.max-device-locked-memory 允许的锁定内存总量。
在将来的发行版中,可能不会
包括此资源控制。
大小(字节)
project.max-port-ids 允许的最大事件端口数。数量(事件端口数)
配置资源控制和属性
76 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
表6–1 标准资源控制(续)
控制名称说明缺省单位
project.max-shm-ids 此项目允许的最大共享内存ID
数。
数量(共享内存ID)
project.max-sem-ids 此项目允许的最大信号ID 数。数量(信号ID)
project.max-msg-ids 此项目允许的最大消息队列ID
数。
数量(消息队列ID)
project.max-shm-memory 此项目允许的共享内存总量。大小(字节)
project.max-lwps 此项目可同时使用的最大LWP
数。
数量(LWP)
project.max-tasks 此项目中允许的最大任务数。数量(任务数)
project.max-contracts 此项目中允许的最大合同数。数量(合同)
task.max-cpu-time 此任务进程可用的最多CPU 时
间。
时间(秒)
task.max-lwps 此任务的进程可同时使用的最
大LWP 数。
数量(LWP)
process.max-cpu-time 此进程可用的最长CPU 时间。时间(秒)
process.max-file-descriptor 此进程可用的最大文件描述符
索引。
索引(最大文件描述
符)
process.max-file-size 此进程可写入的最大文件偏
移。
大小(字节)
process.max-core-size 此进程创建的最大核心转储文
件大小。
大小(字节)
process.max-data-size 此进程可用的最大堆栈缓冲池
内存。
大小(字节)
process.max-stack-size 此进程可用的最大堆栈缓冲池
内存段。
大小(字节)
process.max-address-space 此进程可用的最大地址空间
量,即段大小的总和。
大小(字节)
process.max-port-events 每事件端口允许的最大事件
数。
数量(事件数)
process.max-sem-nsems 每信号集允许的最大信息数。数量(每集合中的信
号数)
process.max-sem-ops 每semop 调用允许的最大信号操
作数(在semget() 时间从资源
控制复制的值)。
数量(操作数)
配置资源控制和属性
第6 章• 资源控制(概述) 77
表6–1 标准资源控制(续)
控制名称说明缺省单位
process.max-msg-qbytes 消息队列中消息的最大字节数
(在msgget() 时间从资源控制
复制的值)。
大小(字节)
process.max-msg-messages 消息队列中的最大消息数(在
msgget() 时间从资源控制复制
的值)。
数量(消息数)
在安装了区域的Solaris 系统上,提供了以下区域范围的资源控制:
 zone.cpu-shares
 zone.max-lwps
有关区域范围资源控制的信息,请参见第215 页中的“资源类型属性”。
您可以在未设置或更改任何资源控制的系统上显示资源控制的缺省值。此类系统在
/etc/system 或project 数据库中不包含任何非缺省条目。要显示值,请使用prctl 命令。
单位支持
所有资源控制均定义了标识资源控制类型的全局标志。系统使用这些标志将基本类型信息
传递给应用程序(如prctl 命令)。应用程序使用此信息确定以下内容:
 适用于每个资源控制的单位字符串
 解释标度值时要使用的正确标度
以下全局标志均可用:
全局标志资源控制类型字符串修饰符标度
RCTL_GLOBAL_BYTES bytes B 1
KB 210
MB 220
GB 230
TB 240
PB 250
EB 260
配置资源控制和属性
78 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
全局标志资源控制类型字符串修饰符标度
RCTL_GLOBAL_SECONDS seconds s 1
Ks 103
Ms 106
Gs 109
Ts 1012
Ps 1015
Es 1018
RCTL_GLOBAL_COUNT count 无1
K 103
M 106
G 109
T 1012
P 1015
E 1018
标度值可用于资源控制。以下示例显示了标度阈值:
task.max-lwps=(priv,1K,deny)
注– 单位修饰符由prctl、projadd 和projmod 命令接受。您不能在project 数据库本身中使
用单位修饰符。
资源控制值和权限级别
资源控制的阈值构成了一个执行点,在此点可能会触发本地操作或者发生全局操作(如日
志记录)。
资源控制的每个阈值都必须与某个权限级别关联。权限级别必须为以下三种类型之一。
 基本,此类型的权限级别可由调用过程的属主修改
 特权,此类型的权限级别仅可由特权(超级用户)调用方修改
 系统,此类型的权限级别在操作系统实例的持续时间内固定不变
每个资源控制都保证有一个由系统或资源提供器定义的系统值。系统值表示操作系统的当
前实现可以提供的资源量。
配置资源控制和属性
第6 章• 资源控制(概述) 79
可以定义任意数量的权限值,但仅允许定义一个基本值。缺省情况下,将为没有指定权限
值时执行的操作指定基本权限。
资源控制值的权限级别在资源控制块(如RCTL_BASIC、RCTL_PRIVILEGED 或
RCTL_SYSTEM)的权限字段中定义。有关更多信息,请参见setrctl(2)。您可以使用
prctl 命令来修改与基本级别和特权级别关联的值。
针对资源控制值的全局和本地操作
可以对资源控制值执行两种类别的操作:全局操作和本地操作。
针对资源控制值的全局操作
全局操作可应用于系统上每个资源控制的资源控制值。您可以使用rctladm(1M) 手册页中
介绍的rctladm 命令来执行以下操作:
 显示活动系统资源控制的全局状态
 设置全局日志操作
您可以对资源控制禁用或启用全局日志操作。通过指定严重性级别,您可以将syslog 操作
设置为特定的级别syslog=level。level 的可能设置如下:
 debug
 info
 notice
 warning
 err
 crit
 alert
 emerg
缺省情况下,没有资源控制违规的全局日志。
针对资源控制值的本地操作
本地操作针对尝试超过控制值的进程执行。对于为资源控制设定的每个阈值,您都可以关
联一个或多个操作。有三种类型的本地操作:none、deny 和signal=。这三种操作按以下方
式使用:
none 对于请求数量大于阈值的资源请求不执行任何操作。在不影响应用程序进度的
情况下监视资源的使用情况时,此操作非常有用。虽然超过阈值的进程不会受
到影响,但是您还可以启用在超过资源控制时显示的全局消息。
deny 您可以拒绝请求数量大于阈值的资源请求。例如,如果新的进程超过控制值,
则带有操作deny 的task.max-lwps 资源控制会导致fork 系统调用失败。请参见
fork(2) 手册页。
配置资源控制和属性
80 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
signal= 您可以在超过资源控制时启用全局信号消息操作。当超过阈值时,会向进程发
送信号。如果进程占用了其他资源,则不会发送其他信号。表6–2 中列出了可
用的信号。
并非所有的操作都可应用于每个资源控制。例如,某个进程的CPU 份额数不能超过为其所
属的项目指定的CPU 份额数。因此,不允许对project.cpu-shares 资源控制执行拒绝操
作。
由于存在实现限制,因此,每个控制的全局属性可以限制可对阈值设置的可用操作的范
围。(请参见rctladm(1M) 手册页。)下表列出了可用信号操作。有关信号的其他信息,请
参见signal(3HEAD) 手册页。
表6–2可用于资源控制值的信号
信号说明描述
SIGABRT 终止进程。
SIGHUP 发送挂起信号。当载波在断开的线路上停
止时出现。发送给控制终端的进程组的信
号。
SIGTERM 终止进程。由软件发送的终止信号。
SIGKILL 终止进程并中止程序。
SIGSTOP 停止进程。作业控制信号。
SIGXRES 超过了资源控制限制。由资源控制功能生
成。
SIGXFSZ 终止进程。超过了文件大小限制。仅可用于具有
RCTL_GLOBAL_FILE_SIZE 属性
的资源控制
(process.max-file-size)。有关
更多信息,请参见
rctlblk_set_value(3C)。
SIGXCPU 终止进程。超过了CPU 时间限制。仅可用于具有
RCTL_GLOBAL_CPUTIME 属性
的资源控制
(process.max-cpu-time)。有关
更多信息,请参见
rctlblk_set_value(3C)。
资源控制标志和属性
系统的每个资源控制都有一组特定的关联属性。这组属性定义为一组标志,这些标志与此
资源的所有受控实例关联。不能更改全局标志,但是可以使用rctladm 或getrctl 系统调用
检索这些标志。
配置资源控制和属性
第6 章• 资源控制(概述) 81
本地标志可为特定进程或进程集合中资源控制的特定阈值定义缺省行为和配置。一个阈值
的本地标志不会影响同一资源控制的其他已定义阈值的行为。但是,全局标志会影响与特
定控制关联的每个值的行为。本地标志可以在其对应的全局标志提供的约束内使用prctl 命
令或setrctl 系统调用进行修改。请参见setrctl(2)。
有关本地标志、全局标志及其定义的完整列表,请参见rctlblk_set_value(3C)。
要确定在达到特定资源控制的阈值时的系统行为,请使用rctladm 显示此资源控制的全局标
志。例如,要显示process.max-cpu-time 的值,请键入以下内容:
$ rctladm process.max-cpu-time
process.max-cpu-time syslog=off [ lowerable no-deny cpu-time inf seconds ]
全局标志表示以下内容。
lowerable 不需要超级用户权限来减小此控制的权限值。
no-deny 即使当超过阈值时,也从不拒绝对资源的访问。
cpu-time SIGXCPU 可用于在到达此资源的阈值时发送。
seconds 资源控制的时间值。
使用prctl 命令可以显示资源控制的本地值和操作。
$ prctl -n process.max-cpu-time $$
process 353939: -ksh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
process.max-cpu-time
privileged 18.4Es inf signal=XCPU -
system 18.4Es inf none
两个阈值都设置了max (RCTL_LOCAL_MAXIMAL) 标志,并且为此资源控制定义了inf
(RCTL_GLOBAL_INFINITE) 标志。inf 值可以是无穷大,但从不会达到。因此,如同配置
的那样,两个阈值都表示从不会超过的无穷大值。
资源控制执行
一个资源可以存在多个资源控制。进程模型中的每个内嵌项目级别均可存在资源控制。如
果同一资源的不同容器级别上的资源控制都处于活动状态,则首先执行最小容器的控制。
因此,如果同时遇到process.max-cpu-time 和task.max-cpu-time 这两个控制,则首先对第
一个控制执行操作。
配置资源控制和属性
82 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
图6–1进程集合、容器关系及其资源控制集
全局监视资源控制事件
通常,进程的资源消耗情况是未知的。要获取更多信息,请尝试执行全局资源控制操作,
通过rctladm 命令可实现这些操作。使用rctladm 可以对资源控制设置syslog 操作。然后,
如果此资源控制管理的任意实体达到阈值,则会在已配置的日志级别上记录系统消息。有
关更多信息,请参见第7 章和rctladm(1M) 手册页。
应用资源控制
登录或调用newtask、su 或其他项目识别的启动程序at、batch 或cron 时,可以为项目指定
表6–1 中列出的每个资源控制。每个启动的命令都会在发出调用的用户的缺省项目的单独
任务中启动。有关更多信息,请参见手册页login(1)、newtask(1)、at(1)、cron(1M) 和
su(1M)。
对project 数据库中条目的更新(无论是对/etc/project 文件还是对网络名称服务中此数
据库表示的内容)不会应用于当前活动的项目。更新在新任务通过登录或newtask 加入项目
时应用。
在正在运行的系统上临时更新资源控制值
在project 数据库中更改的值仅对于项目中启动的新任务有效。但是,您可以使用rctladm
命令和prctl 命令在正在运行的系统上更新资源控制。
在正在运行的系统上临时更新资源控制值
第6 章• 资源控制(概述) 83
更新日志状态
rctladm 命令会影响系统范围内每个资源控制的全局日志状态。此命令可用于在超过控制时
查看syslog 日志的全局状态并设置此日志的级别。
更新资源控制
您可以使用prctl 命令来查看并临时更改按进程、按任务或按项目的资源控制值和操作。项
目、任务或进程的ID 作为输入提供,并且此命令在定义了控制的级别上针对资源控制运
行。
对值和操作所做的修改会立即生效。但是,这些修改仅应用于当前的进程、任务或项目。
更改不会在project 数据库中记录。如果重新启动系统,则修改会丢失。必须在project 数
据库中对资源控制进行永久性更改。
所有可在project 数据库中修改的资源控制设置也可使用prctl 命令进行修改。可以添加或
删除基本值和权限值,还可以修改其操作。缺省情况下,基本类型可用于所有设置的操
作,但是具有超级用户权限的进程和用户还可以修改特权资源控制。不能更改系统资源控
制。
用于资源控制的命令
下表显示了用于资源控制的命令。
命令参考说明
ipcs(1) 可用于查看使用项目资源的IPC 对象
prctl(1) 可用于对资源控制功能在本地范围进行运行时询问和修改
rctladm(1M) 可用于对资源控制功能在全局范围进行运行时询问和修改
resource_controls(5) 手册页介绍了通过项目数据库提供的资源控制,其中包括单位和标度
因素。
用于资源控制的命令
84 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
管理资源控制(任务)
本章介绍如何管理资源控制功能。
有关资源控制功能的概述,请参见第6 章。
管理资源控制(任务图)
任务说明参考
设置资源控制。为/etc/project 文件中的项目
设置资源控制。
第86 页中的“设置资源控制”
获取或修改本地范围的活动进
程、任务或项目的资源控制值。
对与系统上的活动进程、任务或
项目关联的资源控制进行运行时
询问和修改。
第89 页中的“使用prctl 命令

在正在运行的系统上,查看或更
新资源控制的全局状态。
查看整个系统范围内每个资源控
制的全局日志状态。还在超过控
制时设置syslog 日志的级别。
第96 页中的“使用rctladm”
报告活动的进程间通信
(interprocess communication,
IPC) 功能的状态。
显示有关活动的进程间通信
(interprocess communication,
IPC) 功能的信息。查看哪些IPC
对象正在使用项目资源。
第97 页中的“使用ipcs”
确定是否为Web 服务器分配了
足够的CPU 容量。
设置对资源控制执行的全局操
作。通过此操作,可以接收任何
所设资源控制值太低的实体的通
知。
第98 页中的“如何确定是否为
Web 服务器分配了足够的CPU
容量”
7第7 章
85
设置资源控制
 如何为项目中的每个任务设置最大LWP 数
此过程将名为x-files 的项目添加到/etc/project 文件,并为在此项目中创建的任务设置
最大LWP 数。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Basic Administration》中的“Using the Solaris Management ToolsWith
RBAC (Task Map)”。
使用带有-K 选项的projadd 命令创建名为x-files 的项目。将在此项目中创建的每个任务的
最大LWP 数设置为3。
# projadd -K ’task.max-lwps=(privileged,3,deny)’ x-files
使用以下方法之一,查看/etc/project 文件中的条目:
 键入:
# projects -l
system
projid : 0
comment: ""
users : (none)
groups : (none)
attribs:
.
.
.
x-files
projid : 100
comment: ""
1
2
3
设置资源控制
86 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
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)
会话样例
执行完此过程中的步骤之后,当超级用户在项目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 - denysystem
2.15G max deny -
# id -p
uid=0(root) gid=1(other) projid=100(x-files)
 
 
 

以上文章转自于 : http://developers.sun.com.cn/
阅读(603) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~