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

资源控制标志和属性

系统的每个资源控制都有一组特定的关联属性。这组属性定义为一组标志,这些标志与此资源的所有受控实例关联。不能修改全局标志,但是可以使用 rctladmgetrctl 系统调用检索这些标志。

本地标志可为特定进程或进程集合中资源控制的特定阈值定义缺省行为和配置。一个阈值的本地标志不会影响同一资源控制的其他已定义阈值的行为。但是,全局标志会影响与特定控制关联的每个值的行为。可以在本地标志对应的全局标志提供的约束内,使用 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

资源控制的时间值。

no-basic

不能设置权限类型为 basic 的资源控制值。只允许有特权的资源控制值。

no-signal

不能对资源控制值设置本地信号操作。

no-syslog

不能为此资源控制设置全局 syslog 消息操作。

deny

超出阈值时总是拒绝资源请求。

count

资源控制的计数(整数)值。

bytes

资源控制大小的单位。

使用 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 值可以是无穷大,但从不会达到。因此,如同配置的那样,两个阈值都表示从不会超过的无穷大值。