全局管理员或具有相应授权的用户可以为区域设置区域范围的特权资源控制。区域范围的资源控制可限制区域内所有进程实体总的资源使用情况。
使用 zonecfg 命令同时为全局区域和非全局区域指定这些限制。请参见创建和使用 Oracle Solaris 区域 中的如何配置区域。
设置区域范围的资源控制的首选简单方法是使用属性名称或资源(如 capped-cpu),而不使用 rctl 资源(如 cpu-cap)。
zone.cpu-cap 资源控制可以对某个区域可占用的 CPU 资源量设置绝对限制。值 100 表示将一个 CPU 的 100% 用作设置。值 125 表示 125%,因为在使用 CPU 上限时,100% 对应于系统中的一个 CPU。
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-processes。zone.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-ids、zone.max-sem-ids、zone.max-shm-ids 和 zone.max-shm-memory 资源控制可用于限制区域中的所有进程使用的 System V 资源。对区域中项目的 System V 资源的分配可使用这些资源控制的项目版本来进行控制。这些控制的全局属性名称是 max-msg-ids、max-sem-ids、max-shm-ids 和 max-shm-memory。
zone.max-swap 资源控制可限制区域中的用户进程地址空间映射和 tmpfs 挂载所占用的交换空间。prstat –Z 的输出将显示一个 SWAP 列。报告的交换是区域进程和 tmpfs 挂载所使用的总交换量。此值有助于监视每个区域预留的交换空间,可用于选择适当的 zone.max-swap 设置。
|
可以使用 prctl 命令为正运行的进程指定这些限制。创建和使用 Oracle Solaris 区域 中的如何使用 prctl 命令在全局区域中设置 FSS 份额中提供了一个示例。通过 prctl 命令指定的限制不是持久的。在重新引导系统后,此限制将失效。