Oracle® Solaris Zones 介绍

退出打印视图

更新时间: 2014 年 12 月
 
 

设置区域范围的资源控制

全局管理员或具有相应授权的用户可以为区域设置区域范围的特权资源控制。区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。

使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。请参见创建和使用 Oracle Solaris 区域 中的如何配置区域

设置区域范围的资源控制的首选简单方法是使用属性名称或资源(如 capped-cpu),而不使用 rctl 资源(如 cpu-cap)。

zone.cpu-cap 资源控制可以对某个区域可占用的 CPU 资源量设置绝对限制。值 100 表示将一个 CPU 的 100% 用作设置。值 125 表示 125%,因为在使用 CPU 上限时,100% 对应于系统中的一个 CPU。


注 - 设置 capped-cpu 资源时,可以使用小数来表示单位。该值对应于 zone.cpu-cap 资源控制,但设置减小 100 倍。设置为 1 等效于资源控制设置 100

zone.cpu-shares 资源控制可以对区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数设置限制。CPU 份额首先分配给区域,然后在区域内的项目之间进一步分配,如 project.cpu-shares 项中所述。有关更多信息,请参见创建和使用 Oracle Solaris 区域 中的在安装了区域的 Oracle Solaris 系统上使用公平份额调度器。此控制的全局属性名称是 cpu-shares

zone.max-locked-memory 资源控制可以限制某个区域可以使用的锁定物理内存量。可以使用 project.max-locked-memory 资源控制来控制如何在区域中的项目间分配锁定内存资源。有关更多信息,请参见在 Oracle Solaris 11.2 中进行资源管理 中的可用的资源控制

zone.max-lofi 资源控制可以限制某个区域可以创建的潜在 lofi 设备的数量。

zone.max-lwps 资源控制通过禁止一个区域中有过多 LWP 影响其他区域,来增强资源隔离功能。对此区域中项目的 LWP 资源的分配可使用 project.max-lwps 资源控制进行控制。有关更多信息,请参见在 Oracle Solaris 11.2 中进行资源管理 中的可用的资源控制。此控制的全局属性名称是 max-lwps

zone.max-processes 资源控制通过防止某个区域使用太多的进程表槽并给其他区域造成影响,来增强资源隔离。可以使用在 Oracle Solaris 11.2 中进行资源管理 中的可用的资源控制中所述的 project.max-processes 资源控制来设置区域内各项目间的进程表槽资源分配。此控制的全局属性名称是 max-processeszone.max-processes 资源控制还包括 zone.max-lwps 资源控制。如果设置了 zone.max-processes,但未设置 zone.max-lwps,则在引导区域时 zone.max-lwps 将被隐式设置为 zone.max-processes 值的 10 倍。注意,由于常规进程和僵进程都使用进程表槽,因此 max-processes 控制可以防止僵进程用尽进程表。由于僵进程没有定义任何 LWP,因此 max-lwps 无法防止这种可能性。

zone.max-msg-idszone.max-sem-idszone.max-shm-idszone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-idsmax-sem-idsmax-shm-idsmax-shm-memory

zone.max-swap 资源控制可限制区域中的用户进程地址空间映射和 tmpfs 挂载所占用的交换空间。prstat –Z 的输出将显示一个 SWAP 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择适当的 zone.max-swap 设置。

表 2-2  区域范围的资源控制
控制名称
全局属性名称
说明
缺省单位
所用值
zone.cpu-cap
此区域可用的 CPU 资源量的绝对限制
数量(CPU 数目),以百分比表示

注 - 设置 capped-cpu 资源时,可以使用小数来表示单位。

zone.cpu-shares
cpu-shares
此区域的公平份额调度器 (fair share scheduler, FSS) CPU 份额数
数量(份额)
zone.max-locked-memory
区域可用的锁定物理内存的总量
如果将 priv_proc_lock_memory 指定给某个区域,请考虑同时设置此资源控制,以防止该区域锁定所有内存。
大小(字节)
capped-memorylocked 属性
zone.max-lofi
max-lofi
可由区域创建的潜在 lofi 设备的数量限制
数量(lofi 设备的数量)
zone.max-lwps
max-lwps
此区域可同时使用的最大 LWP 数
数量 (LWP)
zone.max-msg-ids
max-msg-ids
此区域允许的最大消息队列 ID 数
数量(消息队列 ID)
zone.max-processes
max-processes
此区域可同时使用的最大进程表槽数
数量(进程表槽数)
zone.max-sem-ids
max-sem-ids
此区域允许的最大信号量 ID 数
数量(信号量 ID)
zone.max-shm-ids
max-shm-ids
此区域允许的最大共享内存 ID 数
数量(共享内存 ID)
zone.max-shm-memory
max-shm-memory
此区域允许的系统 V 共享内存总量
大小(字节)
zone.max-swap
可用于此区域的用户进程地址空间映射和 tmpfs 挂载的交换空间总量
大小(字节)
capped-memoryswap 属性

可以使用 prctl 命令为正运行的进程指定这些限制。创建和使用 Oracle Solaris 区域 中的如何使用 prctl 命令在全局区域中设置 FSS 份额中提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。