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

关于启用和禁用资源池和动态资源池

要启用和禁用资源池和动态资源池,请参见启用和禁用池功能

区域中使用的资源池


提示 –

Solaris 10 8/07: 除了将区域与系统中已配置的资源池建立关联外,还可以使用 zonecfg 命令来创建一个临时池,以在该区域运行时生效。有关更多信息,请参见Solaris 10 8/07:dedicated-cpu 资源


在启用了区域的系统上,可以将非全局区域与一个资源池关联,虽然不需要将池专门分配给特定区域。此外,您不能使用全局区域中的 poolbind 命令将非全局区域中的单个进程绑定到其他池。要将非全局区域与池关联,请参见配置、检验并提交区域

请注意,如果您为池设置了调度类并将该池与非全局区域关联,则缺省情况下,此区域会使用此调度类。

如果使用动态资源池,则 poold 执行实例的范围限制为全局区域。

在非全局区域中运行的 poolstat 实用程序仅显示与该区域关联的池的相关信息。在非全局区域中运行的不带参数的 pooladm 命令仅显示与此区域关联的池的相关信息。

有关资源池命令的信息,请参见用于资源池功能的命令

何时使用池

资源池提供了一种通用机制,可应用于许多管理方案。

批处理计算服务器

使用池功能可以将一个服务器分为两个池。一个池由分时用户用于登录会话和交互式工作,另一个池用于通过批处理系统提交的作业。

应用程序或数据库服务器

根据交互式应用程序的要求对用于这些应用程序的资源进行分区。

分期启用应用程序

确定用户期望。

您最初可能将计算机部署为仅运行计算机最终应提供的服务的一部分。如果在计算机联机时未建立基于预留的资源管理机制,则用户可能会遇到问题。

例如,公平份额调度器会优化 CPU 使用率。仅运行一个应用程序时,计算机的响应速度可能会很快,但这仅是误导性的现象。如果装入多个应用程序,则用户将不会看到如此快的响应速度。通过为每个应用程序使用单独的池,您可以对可用于每个应用程序的 CPU 数设定一个上限,然后再部署所有的应用程序。

复杂分时服务器

对支持大量用户的服务器进行分区。对服务器进行分区提供了一种隔离机制,可使每个用户的响应更具可预测性。

通过将用户分为绑定到各个池的不同组,并使用公平份额调度 (fair share scheduling, FSS) 功能,您可以调整 CPU 分配以优先满足具有较高优先级的用户组。可以基于用户角色、记帐费用分摊等进行这种分配。

周期性改变的工作负荷

使用资源池适应变换的需求。

您的站点在工作负荷需求方面可能会出现长周期性(例如每月、每季度或每年)的可预测变化。如果您的站点出现这些变化,则可以通过从 cron 作业中调用 pooladm 在多个池配置之间进行切换。(请参见资源池框架。)

实时应用程序

使用 RT 调度程序和指定的处理器资源创建实时池。

系统使用率

执行建立的系统目标。

使用自动执行池守护进程这一功能识别可用的资源,然后监视工作负荷以检测何时不能再满足指定的目标。守护进程可以执行更正操作(如有可能),或者可以将情况记录下来。

资源池框架

/etc/pooladm.conf 配置文件说明了静态池配置。静态配置表示管理员根据资源池功能配置系统的方法。可以指定备用文件名。

当使用服务管理工具 (service management facility, SMF) 或 pooladm -e 命令启用资源池框架时,如果 /etc/pooladm.conf 文件存在,则将该文件中包含的配置应用到系统中。

内核包含有关资源池框架中资源部署的信息。这称为动态配置,它表示特定系统在某个时刻的资源池功能。可以使用 pooladm 命令查看动态配置。请注意,池和资源集的属性显示顺序可以改变。可按以下方法对动态配置进行修改:

可以存在多个静态池配置文件,在不同时间进行激活。您可以通过从 cron 作业中调用 pooladm 在多个池配置之间进行切换。有关 cron 实用程序的更多信息,请参见 cron(1M) 手册页。

缺省情况下,资源池框架不处于活动状态。必须启用资源池才能创建或修改动态配置。即使禁用了资源池框架,仍可以使用 poolcfglibpool 命令处理静态配置文件。如果池功能不处于活动状态,则无法创建静态配置文件。有关配置文件的更多信息,请参见创建池配置

以下手册页中描述了用于资源池和 poold 系统守护进程的命令:

/etc/pooladm.conf 内容

所有资源池配置(包括动态配置)都可以包含以下元素。

system

影响系统整体行为的属性

资源池定义

pset

处理器集定义

cpu

处理器定义

可以处理所有这些元素的属性,以更改资源池框架的状态和行为。例如,池属性 pool.importance 表示指定池的相对重要性。此属性用于可能的资源争用解决方案。有关更多信息,请参见 libpool(3LIB)

池属性

池功能支持可用于池、资源或组件的已命名的类型化属性。管理员可以存储各种池元素的其他属性。可以使用与项目属性类似的名称空间属性。

例如,以下注释表示指定的 pset 与特定的 Datatree 数据库关联。

Datatree,pset.dbname=warehouse

有关属性类型的其他信息,请参见poold 属性


注 –

许多特殊属性将保留供内部使用,不能进行设置或删除。有关更多信息,请参见 libpool(3LIB) 手册页。


在系统上实现池

通过下列方法之一可以在系统上实现用户定义的池。

有关启用和禁用资源池的信息,请参见启用和禁用池功能。如果正在使用用户自定义的池或资源,则不能禁用池功能。

要配置资源池,您必须拥有超级用户权限,或者在配置文件列表中拥有进程管理配置文件。系统管理员角色包括进程管理配置文件。

poold 资源控制器使用动态资源池功能来启动。