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

针对资源控制值的本地操作

本地操作对试图超过控制值的进程执行。对于为资源控制设定的每个阈值,您都可以关联一个或多个操作。有三种类型的本地操作: nonedenysignal=。这三种操作按以下方式使用:

none

对于请求数量大于阈值的资源请求不执行任何操作。在不影响应用程序进度的情况下监视资源的使用情况时,此操作非常有用。虽然超过阈值的进程不会受到影响,但是您还可以启用在超过资源控制时显示的全局消息。

deny

您可以拒绝请求数量大于阈值的资源请求。例如,如果新的进程超过控制值,则带有操作 denytask.max-lwps 资源控制会导致 fork 系统调用失败。请参见 fork(2) 手册页。

signal=

您可以在超过资源控制时启用全局信号消息操作。当超过阈值时,会向进程发送信号。如果进程占用了其他资源,则不会发送其他信号。表 6–3 中列出了可用的信号。

并非所有的操作都可应用于每个资源控制。例如,某个进程的 CPU 份额数不能超过为其所属的项目指定的 CPU 份额数。因此,不允许对 project.cpu-shares 资源控制执行拒绝操作。

由于存在实现限制,因此,每个控制的全局属性可以限制可对阈值设置的可用操作的范围。(请参见 rctladm(1M) 手册页。)下表列出了可用信号操作。有关信号的其他信息,请参见 signal(3HEAD) 手册页。

表 6–3 可用于资源控制值的信号

信号 

说明 

说明 

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)