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

rcapd 配置

您可以使用 rcapadm 命令配置资源上限设置守护进程。可以执行以下操作:

要配置守护进程,您必须拥有超级用户权限,或您的配置文件列表中有进程管理配置文件。进程管理角色和系统管理员角色都包含进程管理配置文件。

可以根据配置间隔(请参见rcapd 操作间隔)或者在需要时通过发送 SIGHUP(请参见 kill(1) 手册页),将配置更改并入 rcapd

如果使用时不带参数,rcapadm 将显示资源上限设置守护进程(如果已配置)的当前状态。

以下各小节将讨论上限执行、上限值以及 rcapd 操作间隔。

在安装有区域的系统上使用资源上限设置守护进程

可以在配置区域时通过设置 capped-memory 资源,来控制该区域的驻留集大小 (resident set size, RSS) 的使用情况。有关更多信息,请参见Solaris 10 8/07:物理内存控制和 capped-memory 资源。您可以区域(包括全局区域)中运行 rcapd,以便对该区域中的项目执行内存上限。

您可以为指定区域可占用的最大内存量设置一个临时上限(该值可持续到下次重新引导)。请参见如何为区域指定临时资源上限

如果要在某个区域中使用 rcapd 来控制已定义资源上限的项目中运行的进程所占用的物理内存,则必须在此区域中配置该守护进程。

为位于不同的区域中的应用程序选择内存上限时,通常不必考虑这些应用程序驻留在不同的区域中。但每区域服务则例外。每区域服务会占用内存。在确定系统的物理内存量和内存上限时,必须考虑此内存占用情况。


注 –

您不能在 lx 标记区域中运行 rcapd。但是,您可以从全局区域中使用该守护进程来在标记区域中设置内存上限。


内存上限执行阈值

内存上限执行阈值是系统中触发上限执行的物理内存使用百分比。当系统超过此使用率时,便会执行上限。应用程序和内核使用的物理内存包括在此百分比中。此使用百分比确定执行内存上限的方式。

在执行上限时,会对项目工作负荷中的内存执行页出操作。

某个工作负荷最多可以使用大小等于其上限的物理内存。只要系统内存使用率低于内存上限执行阈值,工作负荷便可使用更多的内存。

要设置上限执行值,请参见如何设置内存上限执行阈值

确定上限值

如果项目上限设置得太低,就没有足够的内存来保证工作负荷在正常情况下有效地执行。由于工作负荷需要更多内存而产生的分页操作会对系统性能造成负面影响。

上限设置得太高的项目可能会在超过其上限值之前占用可用物理内存。在这种情况下,物理内存由内核而不是 rcapd 进行有效管理。

在确定项目的上限时,应考虑到以下因素。

对 I/O 系统的影响

守护进程可以尝试在抽样使用率超过项目上限时降低项目工作负荷的物理内存使用率。在上限执行过程中,将使用交换设备和包含工作负荷映射的文件的其他设备。交换设备的性能是确定经常超过其上限的工作负荷的性能的重要因素。执行工作负荷类似于在具有等同于工作负荷上限的物理内存量的计算机上运行该工作负荷。

对 CPU 使用率的影响

守护进程的 CPU 使用率随着它已设置上限的项目工作负荷中的进程数和工作负荷的地址空间大小而变化。

守护进程的少部分 CPU 时间用在对每个工作负荷使用情况进行的抽样上。向工作负荷中添加进程会增加对使用率进行抽样所用的时间。

守护进程的另一部分 CPU 时间用在超过上限时执行上限上。所用的时间与涉及的虚拟内存量成比例。所用的 CPU 时间会根据工作负荷的地址空间总大小的相应更改而延长或缩短。此信息在 rcapstat 输出的 vm 列中显示。有关更多信息,请参见使用 rcapstat 监视资源利用率rcapstat(1) 手册页。

有关共享内存的报告

rcapd 守护进程报告与其他进程共享的内存页的 RSS,或在与合理的准确估算同样的进程中的多次映射。如果不同项目中的进程共享同一内存,那么将为共享该内存的所有项目为 RSS 总数计算该内存。

估算可用于广泛使用共享内存的工作负荷(如数据库)。对于这些数据库工作负荷,您也可以使用 prstat 命令的 -J-Z 选项的输出对项目的常规使用进行抽样,以便确定适当的初始上限值。有关更多信息,请参见 prstat(1M) 手册页。

rcapd 操作间隔

您可以调整 rcapd 所执行的定期操作的间隔。

所有间隔都以秒为单位指定。下表介绍了 rcapd 操作及其缺省间隔值。

操作 

缺省间隔值(秒) 

说明 

scan

15 

对加入或保留项目工作负荷的进程进行扫描的间隔秒数。最小值为 1 秒。 

sample

对驻留集大小和后续上限执行进行抽样的间隔秒数。最小值为 1 秒。 

report

5  

对分页统计信息进行更新的间隔秒数。如果设置为 0,则不更新统计信息,并且 rcapstat 的输出也不是最新的。

config

60 

重新配置的间隔秒数。在重新配置事件中,rcapadm 读取配置文件以获得更新,并扫描 project 数据库以查找新的或已修改的项目上限。向 rcapd 发送 SIGHUP 会立即执行重新配置。

要调整间隔,请参见如何设置操作间隔

确定 rcapd 扫描间隔

扫描间隔控制 rcapd 查找新进程的频率。在运行有多个进程的系统上,完全扫描这些进程列表会花费较多时间,因此,最好可以延长间隔,以便缩短所用的总 CPU 时间。但是,扫描间隔也代表进程为了纳入具有上限的工作负荷而必须存在的最短时间。如果工作负荷运行多个短期进程,则在延长扫描间隔的情况下,rcapd 无法将进程纳入工作负荷。

确定抽样间隔

使用 rcapadm 配置的抽样间隔是指,在对工作负荷使用情况进行抽样和执行上限(如果超过该上限)这两个操作之间 rcapd 等待的最短时间。如果缩短此间隔,在多数情况下,rcapd 会更频繁地执行上限,从而可能会因换页导致 I/O 增加。但是,较短的抽样间隔也可以减小特定工作负荷的物理内存使用率突然增加而给其他工作负荷带来的影响。抽样之间的窗口(其中,工作负荷可能不受限制地占用内存并且可能从其他具有上限的工作负荷中获取内存)会缩小。

如果为 rcapstat 指定的抽样间隔小于使用 rcapadmrcapd 指定的间隔,则某些间隔的输出可能为零。发生这种情况是因为 rcapd 更新统计信息的间隔大于使用 rcapadm 指定的间隔。使用 rcapadm 指定的间隔与 rcapstat 所用的抽样间隔无关。