本章将介绍容器和项目,以及如何启动产品。
包括以下主题:
项目是与主机相关联的容器。项目用于组织和管理物理系统资源集合。在执行全面服务器整合计划时,项目很有用。项目提供下列功能:
为应用程序设置最小 CPU 保留和内存容量,从而对系统资源进行平衡。
每个应用程序均可获得为其项目设置的最小 CPU 保留和内存容量(可选)。例如:基于应用程序的项目允许您为网络上运行的任意应用程序同时建立最小 CPU 保留和内存容量。当同一台主机上有多个项目处于活动状态时,由于每个应用程序均位于其各自的项目内,从而减少了系统资源的争用现象。这种情况下,为每个项目设置的资源限制是由该主机上的 Solaris 内核执行的。
系统将跟踪项目当前使用的资源总量,还会跟踪项目成员使用的资源量。尽管多个用户和组可能同属于一个或多个项目,但必须为每个 UNIX 用户指定一个默认项目。由 Unix 用户启动的进程可绑定到该用户所属的任何项目。项目则使用项目成员和资源池来跟踪和控制应用程序的资源消耗。
有关项目的工作原理以及资源管理工具的更多信息,请参见第 1 章,Solaris Container Manager 3.6.1 简介。
安装并设置完本软件之后,您可立即使用几个默认项目。也可使用向导来创建自己的项目。所有的项目都有与之相关联的容器。在创建新项目时,此容器可以重复使用。项目具有以下优点:
可创建多个具有完全相同的 CPU 和内存资源限制的项目实例。
将多个项目实例部署到多台主机上。尽管单个活动项目不能跨越多台主机, 但同一个容器内的附加项目实例则可部署到多台主机上。
可缩短创建新项目实例所需的时间,使您能够在需求发生变动时迅速分配资源。
GUI 是基于浏览器的,它提供三种管理视图(选项):一种是基于主机的角度,一种是基于容器的角度,最后一种是基于打开的报警的角度。您可以通过创建组并选择这些组所应包含的元素来进一步组织主机视图和容器视图。
此外,通过该软件可以轻松地检查运行于容器内部的各个进程以及当前正被使用的资源。还有若干图形选项可帮助评估每个容器或主机的资源使用水平,包括将数据导出到文件中。这些功能使您能够监视资源的消耗情况并对其重新评估,从而作出适当的调整。
当容器的资源使用情况达到设定的阈值时,该软件的报警功能可通过电子邮件通知您此情况。报警图标同时也会显示在主机和容器的 GUI 中。
资源更改作业功能使您能够通过一个请求来安排更改一个或多个容器上的当前资源限制。向导会指导您完成创建或修改一个资源更改作业所需的各个步骤。
名称
描述(可选)
项目类型
与容器相关联的项目名称
与容器应用程序相关联的 UNIX 用户和组
匹配表达式(如果存在的话)
为容器指定的名称是永久性的,因此无法更改。项目名称同样也是永久性的。可以更改容器的其他标识信息。
该软件可将容器保存下来。在容器被删除之前,它可被重复使用。项目是一种与主机相关联的容器。当将项目与主机相关联并设置了它的资源保留之后,项目便处于活动状态。
因为具有相同定义和资源保留的多个项目可同时在多个不同的主机上处于活动状态,因此容器可方便地通过数据中心管理它们。保存容器之后,可随时使用它激活任意合适主机上的项目。因此,可以将容器用作模板来新建项目。
容器可充当多个项目的模板。容器将这些项目的共同属性存储在一个中心位置。这些项目的共同属性包括:
项目名称。
用于确定项目包含哪些进程的方法(例如:与容器相关联的 UNIX 用户和组或某一匹配表达式)
其他属性(如 CPU 份额和内存限制)在活动项目所处的主机中是特定的。在 Solaris Container Manager 3.6 中,这些在中心位置存储的共同属性集称作容器。当某一特定主机上的容器被激活后,系统将它初始化为一个 Solaris 项目,并保存在 /etc/project 中。
例如,某公司希望为其电子邮件应用程序设置一个容器。这些项目的共同属性将是:
项目名称:mail_services。
项目决定应包含哪些进程的方法:是一个包含 "mozilla" 的匹配表达式。
当某个特定的主机激活该容器时,该公司即初始化该项目,并且此时也可以指定资源池、CPU 份额和内存限制了。
您可以使用容器跨不同区域和主机创建多个项目。例如:如果使用单个容器在三个不同的主机上创建三个活动项目,则在该容器中,您将拥有一个容器和三个项目。更改容器中的基本信息,将会更改基于该容器的所有项目。
可以使用“项目创建”向导创建项目,并在完成所有步骤后立即激活该项目。系统同时创建一个容器,且它的名称保存在 GUI 中。此外,您还可以通过指导您完成整个创建过程的向导选择当前只创建容器,以后再激活该项目。
对于容器,您可以使用 GUI 执行下列任务:
新建容器
创建新组
将容器移入和移出组
修改属性
在主机上新建项目
删除容器
对于项目,您可以使用 GUI 执行下列任务:
创建新组
移动项目
修改属性
更改资源保留
创建资源更改作业
检查正在内部运行的进程的状态
请求资源使用情况报告并将数据导出到文件中
取消激活或激活项目
设置报警
删除项目
实际上,项目并不强制应用您为某个应用程序所设置的资源消耗限制。而是在设定最小 CPU 保留和内存容量并激活该项目后,Solaris 内核开始实施这些限制。在使用项目之前,您需要了解更多有关项目状态的信息。项目可处于以下三种状态之一:已定义的、活动的和非活动的。
在整个生存期内,项目可以在这些状态之间转移。
容器是在初始阶段创建的,此时项目本身尚未完全成形。每个项目必须有一个唯一名称,并且可无期限地保存在数据库中。
图 3–2 显示,在容器与主机关联之后,项目转为活动状态。非活动项目在被取消激活并不再与主机关联之后可移回已定义的状态。
使项目变为活动状态的第一步就是将其容器与某个主机关联起来。第二步是设置资源限制,即为该项目分配最小 CPU 保留和内存容量。必须将该项目与某个能够支持这些资源限制的主机相关联。也可以将活动项目视作已部署的,这意味着它已被推出,并且驻留在某台主机上。
使用“新建项目”向导创建基于应用程序的项目时,可提供匹配表达式来标识与该应用程序关联的进程。这样,所有符合该匹配表达式的进程都将自动移到此容器下。一旦激活项目,系统便在与该容器相关联的主机上的 /etc/project 数据库中创建一个条目。相应地,匹配的进程将移到该容器的项目名称之下。移动了这些进程之后,也就收集并保存了该项目所有的资源使用情况数据。
取消激活项目后,系统将不再实施其资源限制。已取消激活的项目将进入非活动状态,并从主机的 /etc/project 文件中删除。尽管该项目处于非活动状态,但仍存在于本软件的数据库中,等待日后激活。重新激活非活动项目后,系统将再次实施该容器的资源限制。
在该项目处于活动状态时收集的有关资源使用情况的所有数据都保留在数据库中。在取消激活该项目后的 30 天之内,您仍然可以请求为其生成使用情况报告。
Solaris 软件资源管理中的标准命令行命令不受 Container Manager 软件的支持。您应该通过 Container Manager 图形用户界面 (Graphical User Interface, GUI) 来管理容器。可使用浏览器从 Java Web Console 启动 GUI。受支持的浏览器有:
Netscape NavigatorTM 4.7x、6.2x 和 7.x(Solaris 8 和 9)
Netscape Navigator 4.7x、6.2x 和 7.x(Microsoft Windows 98/2000/XP)
MozillaTM 1.4 和更高版本
Internet Explorer 5.0 和更高版本(包括 6.x)(Microsoft Windows 98/2000/XP)
如果您的 UNIX 用户 ID 没有显示在 /var/opt/SUNWsymon/cfg/esusers 文件中,请创建此条目。
此外,您还必须被分配到 esadm 或 esdomadm 组。
有关创建条目和分配到组的指导,请参见《Sun Management Center 3.6 安装和配置指南》中的“设置用户”一节。
启动浏览器。
有关受支持浏览器的列表,请参见Container Manager GUI。
要访问Container Manager GUI,可键入:
https://sunmc-server_machine_name:6789/containers |
屏幕上将显示 Java Web Console 登录页面。
如果未显示登录页面,则可能需要重新启动 Java Web Console。有关说明,请参见重新启动 Java Web Console。
如果您打开了 Console 页面,请单击“系统”部分下的 Solaris Container Manager 3.6.1 链接以访问 GUI。
使用您的 UNIX 用户 ID 和密码登录到 Java Web Console。
屏幕将显示Container Manager GUI。该窗口有三个选项卡:“主机”、“容器”和“打开的报警”。
如果无法访问 Java Web Console,请使用此命令重新启动它。
请键入以下命令以超级用户 (su -) 身份重新启动 Java Web Console:
# /usr/sbin/smcwebserver restart |
下表提供了 Container Manager GUI 右侧窗格中显示的各个选项卡的相关信息。
表 3–1 Container Manager GUI 选项卡
制表符(B) |
标签名 |
内容 |
---|---|---|
主机(视图) |
内容 |
提供有关选定主机上资源池的信息。 |
属性 |
提供有关选定主机、区域、项目或资源池的属性的信息。 |
|
使用情况 |
提供有关主机、区域、项目或池每日、每周或每月的资源使用情况信息。可以获得活动项目的实时使用情况数据。只有安装了性能报告管理器软件,此选项卡才可见。 |
|
项目 |
提供关于与主机相关联的项目的信息。 |
|
区域 |
提供关于与主机相关联的区域的信息。 |
|
容器(视图) |
内容 |
提供有关项目的信息。 |
属性 |
提供有关选定主机、容器、项目或资源池的属性的信息。 |
|
使用情况 |
提供有关主机、区域、项目或池每日、每周或每月的资源使用情况信息。可以获得活动项目的实时使用情况数据。只有安装了性能报告管理器软件,此选项卡才可见。 |
|
作业(资源更改作业) |
提供有关已安排的资源更改作业的信息。还可以从此选项卡新建一个资源更改作业。注意:默认容器无法将资源更改作业与其相关联。 |
|
打开的报警 |
提供有关打开的报警(包括严重性、消息、管理对象、启动时间和确认)的信息。 |
|
资源池(深入测试) |
内容 |
提供有关选定资源池上区域的信息。 |
属性 |
提供有关选定资源池属性的信息。 |
|
使用情况 |
提供有关池每日、每周或每月的资源使用情况信息。只有安装了性能报告管理器软件,此选项卡才可见。 |
|
项目 |
提供与选定资源池相关联的项目的有关信息。 |
|
区域(深入测试) |
内容 |
提供有关选定区域上项目的信息。 |
属性 |
提供有关选定区域属性的信息。 |
|
使用情况 |
提供有关区域每日、每周或每月的资源使用情况信息。只有安装了性能报告管理器软件,此选项卡才可见。 |
|
项目(深入测试) |
属性 |
提供有关选定项目的属性的信息。 |
使用情况 |
提供有关项目每日、每周或每月的资源使用情况信息。只有安装了性能报告管理器软件,此选项卡才可见。 |
|
进程 |
提供有关选定项目的进程的信息。 |
|
报警阈值 |
用于设置或删除报警阈值。 |
主机视图从主机的角度组织信息。您正在管理的代理计算机均显示在导航窗口中。当您单击主机名称旁边的展开三角形时,将显示每台主机可用的资源池。您还可以通过此视图管理与主机相关联的各个容器。
系统将自动搜索所有安装了本软件的代理主机,并会将它们添加到主机视图中。可从导航窗口左侧的选项卡访问此视图。所有搜索到的代理主机最初都被放在名为“主机”的默认组中。您可以通过创建新组并将主机移到相关组中来进一步组织此视图。
只有那些属于 Sun Management Center 服务器环境一部分且安装了 Solaris Container Manager 3.6 的代理计算机才会被加载到主机视图中。有关服务器环境的更多信息,请参见《Sun Management Center 3.6.1 用户指南》中的“Sun Management Center 体系结构” 一节。
表 3–1 列出了主机视图中可用的选项卡和信息。
下图显示了“主机”视图以及与默认池相关联的项目表。
“项目”表提供了每个项目的信息,每行详细描述一个项目。“项目”表可提供以下数据:
项目名称
容器名称
项目状态:活动的和非活动的
该项目所绑定的资源池
该项目驻留区域的名称。对于 Solaris 8 和 Solaris 9 主机,区域名称总是全局的。
为该项目设置的最小 CPU 份额
该项目正在使用的 CPU 数量
最大内存限制 (MB)
该项目使用的内存 (MB)
允许在此项目内运行的各进程使用的内存总量 (MB)
该资源池表介绍了有关每个资源池的信息。该资源池表列出了以下数据:
资源池的名称
当前为该资源池设置的 CPU 数
未分配给该资源池中的区域或项目的 CPU 份额
为该资源池设置的调度程序:按时间分配调度程序或合理分配调度程序
为该资源池设置的 CPU 份额
为该资源池设置的 CPU 最小值
为该资源池设置的 CPU 最大值
该区域表介绍了有关每个区域的信息。“区域”表可提供以下数据:
该区域的名称
该区域的状态:已配置、未完成、已安装、就绪、正在运行、正在关闭或关闭
该区域作为虚拟主机唯一的名称
从根 (/) 目录开始的绝对路径
该区域的 IP 地址
分配给该区域中各项目的 CPU 份额数
可分配给与该区域相关联的项目的 CPU 份额数
分配给资源池中该区域的 CPU 份额数
该区域的资源池
容器视图从容器的角度组织信息。所有的容器和项目均显示在导航窗口中。由于容器可重复用于新建项目,因此您可以从该视图中轻松访问容器,并执行其他管理任务。
在完成安装与设置后, 容器视图会自动将该容器组添加为默认的组。从容器视图管理容器。
下图显示了容器视图。
表 3–1 列出了容器视图中包含的可用信息。
主机视图包含名为“主机”的默认组。安装本软件后搜索到的所有主机都放在该组中。同样,容器视图包含一个名为“默认”的默认组,其中放置了主机的所有默认容器。可以在每个视图中创建其他的组来组织主机和容器。
可以使用组来组织数据中心中的数十或数百个系统。例如:可将这些聚在一起的主机置入一个组。您可以将同一用户(内部的或外部的)或部门所拥有的容器置入一个组。同样,可将具有类似应用的容器置入一个组。
如果尚未打开 Container Manager GUI,请按启动 Container Manager GUI中所述打开它。
从导航窗口选择适当的视图。
对于新的容器组,请选择容器视图。“容器”表显示在右侧窗格。
对于新的主机组,请选择 主机视图。“主机和组”表显示在右侧窗格。
单击“新建组”按钮。
屏幕上将出现一个对话框。
键入组的名称,单击“确定”。
键入的名称不能超过 32 个字符。
新组将显示在选定视图中。
如果尚未打开 Container Manager GUI,请按启动 Container Manager GUI中所述打开它。
从导航窗口选择适当的视图。
要将容器移到别的组,可选择容器视图。该容器表显示在右侧窗格中。
要将主机移到别的组,可选择主机视图。“主机和组”表显示在右侧窗格中。
在右侧窗格中,请单击“移动”按钮。
弹出的对话框会列出一些可用的组。
选择将容器或主机移入其中的组。
单击 “确定”。
将容器或主机移入选定的组中。
安装本软件后,容器视图最初会加载一个名为“默认”的组。此组在运行 Solaris 9 或 Solaris 10 操作系统 (OS) 的主机上拥有下列五个默认的容器:
默认
不带项目的进程
超级用户
系统进程
带组成员的用户
这五个默认的容器中每一个在 /etc/project 文件中均有相对应的条目。具体而言,这五个条目分别对应:default、noproject、user.root、system 和 group.staff。
在运行 Solaris 8 发行版的主机上,不存在“带组成员的用户”(group.staff) 容器。其他情况的默认容器均相同。
每个默认容器均处于活动状态,限制的设置为:最小 CPU 保留(CPU 份额)等于 1、无内存容量。默认容器始终绑定到该主机的默认资源池 (pool_default) 上。如果安装了性能报告管理器,则可监视资源的使用情况,并对每个默认容器运行报告。
无法取消激活、编辑或删除这些默认的容器。相应地将每个容器均标记为“只读”。
将每个 UNIX 用户指定到某个默认的项目,并相应指定一个默认的容器。最初,默认容器包含了系统上运行的所有进程。随着您创建项目,进程将从相应的默认容器移出,并移入您创建的项目中。
每个项目均以容器开始。项目可以有三种类型,具体取决于项目创建过程中所做的选择。项目类型决定了该如何跟踪进程。
创建新容器时,必须选择项目类型。项目就是针对相关工作的网络级管理标识符 (ID)。在一个容器中运行的所有进程均具有相同的项目 ID,容器则使用该项目 ID 跟踪正在使用的资源。容器类型取决于创建该容器时所选择的项目类型。
项目名称会始终包含在每个容器的信息中。在主机上激活容器时,此项目名称会添加到该主机的 /etc/project 文件中。只要该容器在该主机上处于活动状态,此条目将一直保留。
同一主机上拥有相同项目名称的两个项目不能同时处于活动状态。这是因为,在容器中运行的所有进程均通过项目 ID 加以跟踪,因此,主机上的每个项目名称都必须唯一。
当创建基于用户或基于组的项目时,用户名或组名将成为项目名称的一部分。对于基于用户的容器,其项目名称变为 user.username 格式。对于基于组的容器,其项目名称变为 group.groupname 格式。因此,当创建基于用户或基于组的项目时,您使用的用户名或组名不能与默认容器的 /etc/project 条目重复。有关更多信息,请参见默认容器。
在创建基于应用程序的容器的过程中,您可以提供一个自己选择的项目名称。项目创建向导允许不同的基于应用程序的项目具有相同的项目名称。但是,两个有相同项目名称的基于应用程序的项目不能同时在同一主机上被激活。仅当您计划在不同主机上激活这些容器时,才能在创建基于应用程序的项目时重复使用项目名称。如果试图在主机上激活第二个项目,而该主机已具有一个相同项目名称的项目,则该激活操作将失败。
下表提供了三种可用项目类型的详细信息,以及基于所做的选择会出现哪些变化情况。
表 3–2 项目类型详细信息
项目类型 |
OS Version |
详细信息 |
---|---|---|
基于用户的 |
Solaris 8 |
只受 Solaris 8 操作系统支持的项目类型。 /etc/project 文件中的项目名称变为 user.username 格式。该项目变成了该用户的主默认项目。 |
|
Solaris 9 和 Solaris 10 |
/etc/project 文件中的项目名称变为 user.username 格式,其中包含了可加入此项目的 UNIX 用户列表。 有效格式为 username。 |
基于组的 |
Solaris 9 和 Solaris 10 |
/etc/project 文件中的项目名称变为 group.groupname 格式。 有效的格式为 groupname。 |
基于应用程序的 |
Solaris 9 和 Solaris 10 |
项目名称可以是应用程序名称或任何其他所选名称。把提供的名称添加到 /etc/project 文件中。 可使用匹配表达式自动将匹配进程移到项目名称下。此表达式是区分大小写的。 必须提供相对应的 username 或 groupname(这些进程当前运行所处的)。 |
在开始使用项目管理应用程序资源之前,首先必须掌握该应用程序的资源使用情况趋势。如果内存容量不足,某些应用程序(如 ORACLE®)的性能会显著降低。所有项目均须设置资源保留:最小 CPU 份额和(可选)最大内存保留(内存容量)。只有在已为应用程序建立了资源要求之后,才能开始使用项目来管理这些保留。
请勿使项目的物理内存容量设置值少于该应用程序的一般使用量。此行为将对该应用程序的性能产生不利的影响,并可能导致显著的延迟,因为该应用程序需要更多的分页和交换处理来使用更多虚拟内存。
在开始使用项目来管理系统资源之前,必须先完成服务器整合计划。一项重要的相关任务是确定整合计划所含应用程序的资源消耗趋势。在理想情况下,在生产环境中执行该整合计划之前,您至少应该花一个月的时间在测试环境中确定该应用程序的资源使用情况趋势。在确定了 CPU 和内存消耗的趋势之后,您还应该在一般的内存需求基础上留出几个百分点。
在设置该项目所需的 CPU 份额量的保留时,可按整数形式分配 CPU 份额量。例如:25、1 和 37 都是有效的份额量。术语“份额”是用来定义分配给项目的系统 CPU 资源量。如果您为项目分配了较大(相对于其他项目)的 CPU 份额,则该项目将从合理分配调度程序中接收更多的 CPU 资源。
CPU 份额不等于 CPU 资源百分比。份额用于定义工作量的相对重要性(相对于其他工作量)。例如:如果销售项目的重要性是市场项目的两倍,则应该为销售项目指定两倍于市场项目的份额。您指定的份额数是不相关的。销售项目的 2 份对市场项目的 1 份与销售项目的 18 份对市场项目的 9 份是一样的。在这两种情况下,销售项目均被赋予两倍于市场项目的 CPU 份额量。
CPU 份额可进一步细分为两类:
CPU 份额
(仅适用于 Solaris 10)项目CPU 份额 (位于特定区域)
在运行 Solaris 8 操作系统的主机上,只有 pool_default 一个资源池是可用的。pool_default 拥有 100 个单位 的 CPU 份额值。
在运行 Solaris 9 和 Solaris 10 操作系统的主机上,新建资源池时您就确定了该池要使用的 CPU 份额值。Solaris Container Manager 给出了一个默认值,但您可以输入任意整数。有些系统管理员按照惯用原则,为该资源池可用的所有 CPU 指定 100 个 CPU 份额。例如:您可以给具有一个 CPU 的资源池指定 100 个 CPU 份额。
假设此池中含有三个项目:项目 X、项目 Y 和项目 Z。您分配给最重要的项目(项目 X)50 个 CPU 份额; 下一个项目(项目 Y)10 个份额;最后一个项目(项目 Z)40 个份额。
可在使用“新建项目”向导创建项目时为项目分配 CPU 份额。“新建项目”向导显示了该池未保留的 CPU 份额,因此您可以确定可用的 CPU 份额并为该项目分配适当的份额。
如果您的主机运行的是 Solaris 10 操作系统,您可以创建区域,并作为整体为该区域分配 CPU 份额,并为区域中的各个项目分配项目 CPU 份额。这些是相关的实体。
可在使用“新建区域”向导创建区域的过程中分配 CPU 份额和项目 CPU 份额。在“新建区域”向导的步骤 4 中可选择资源池。向导将显示该池的 CPU 份额总数和可用的 CPU 份额总数。
输入您想从该资源池中为此区域分配的 CPU 份额值。此整数必须小于或等于该池的可用 CPU 份额总数。
如果该池的可用 CPU 份额总数为 100,则您可以为该区域分配全部的 100 个份额或其中的一部分。本例假设我们从该资源池为该区域分配了 20 个 CPU 份额。
还可以在“新建区域”向导的步骤 4 中输入项目 CPU 份额的值。此字段指定了分配给该区域中各项目的 CPU 份额值。在您创建此值时,您要确定该区域的项目 CPU 份额值。可以输入任意一个整数。您输入的整数确定了您想获得的粒度。
例如,假设我们给区域 A 分配的项目 CPU 份额为 1000。就物理层讲,1000 个项目 CPU 份额就是 20 个 CPU 份额(这些 CPU 份额是从资源池继承来的,并被分为 1000 份)。下面是说明本例 1 个项目 CPU 份额和 CPU 份额之间关系的公式:
1 个项目 CPU 份额 = 20(分配给该区域的 CPU 份额数)/1000(项目 CPU 份额数)= 0.02 个 CPU 份额
当您在区域 A 中创建项目 1 时,项目 1 将从该区域获得份额,而不是直接从资源池获得。如果为区域 A 中的项目 1 分配了 300 个份额,则它将获得 300 个项目 CPU 份额或者 300/1000 x 20/100 = 0.06 个 CPU 份额。
可在调用“新建项目”向导时为项目分配项目 CPU 份额。当您执行到“新建项目”向导的步骤 7“为项目提供资源保留”时,可在名为“CPU 保留(CPU 份额)”的字段中输入项目 CPU 份额。这仅适用于在 Solaris 10 主机的区域中创建项目时。
当您在 Solaris 8 或 Solaris 9 主机上创建项目时,可在字段“未保留的 CPU 份额”中输入 CPU 份额(非项目 CPU 份额)。
请勿使用命令行(zonecfg 命令)手动更改 CPU 份额。这将与 Solaris Container Manager 的计算产生冲突。
全局区域是唯一未绑定到唯一一个资源池的区域。它可以从任意池中获得 CPU 资源。处于全局区域中的各项目可以从主机上的所有资源池中获得 CPU 资源,因为该主机的每个资源池中都有一个隐藏的全局区域。
例如:资源池 Pool_default 具有 4 个 CPU,且其上部署了 zone_1 和 zone_2。 Pool_default 拥有 10 个 CPU 份额。zone_1 拥有 5 个 CPU 份额,zone_2 拥有 4 个 CPU 份额,全局区域拥有 1 个 CPU 份额。
另一个资源池 Pool_1 具有 2 个 CPU 并拥有 10 个 CPU 份额。Pool_1 上只部署了一个区域 zone_3。zone_3 拥有 9 个 CPU 份额。全局区域拥有 1 个 CPU 份额。
全局区域中的各个项目可从其部署到的池(具有 1 个 CPU 份额)中获得它们的 CPU 资源。
在 Solaris Container Manager 中,必须将全局区域中的各个项目部署到 pool_default 中。
Container Manager 使用合理分配调度程序 (Fair Share Scheduler, FSS) 来确保您设置的最小 CPU 份额。 合理分配调度程序是默认的调度程序。通过用项目的份额除以活动项目的份额总数,合理分配调度程序可计算出分配给该项目的 CPU 比例。活动项目就是至少有一个进程在使用 CPU 的项目。用于空闲项目(即不含有活动进程的项目)的份额不适应于该计算。
例如,假设您已分别为销售、市场和数据库这三个项目分配了 2 个、1 个和 4 个份额。所有这些项目都是活动的。该资源池的 CPU 资源是这样分配的:销售项目获得 2/7 的 CPU 资源;市场项目获得 1/7; 数据库项目获得 4/7。如果销售项目是空闲的,则市场项目将获得 1/5,数据库项目将获得 4/5 的 CPU 资源。
注意:合理分配调度程序只在出现 CPU 争用时才限制 CPU 使用。如果系统只有一个项目是活动的,则不管该项目持有的份额数是多少,它都可以使用 100% 的 CPU。从而也就不会浪费 CPU 周期。如果因为没有要执行的任务,某项目没有完全使用指定给它的 CPU,则其余的 CPU 资源将分发给其他活动的进程。如果某项目未定义任何 CPU 份额,那么将给它分配 1 个份额。在份额为零的项目中,其进程的系统优先权将是最低的。只有在非零份额项目不使用 CPU 资源时,这些进程才会运行。
按时间分配调度程序根据优先级分配 CPU 时间,尽量让每个进程均可以相对平等地获得可用的 CPU 资源。由于无需管理,所以 TS 使用起来比较轻松。但是,TS 无法保证特定应用程序的性能。因此,应该在不必进行 CPU 分配时使用 TS。
例如:如果两个项目被分配给 FSS 资源池,而且它们分别拥有 2 个份额(运行在这些项目中的进程数是不相关的),则一个项目只能获得 50% 的可用 CPU。这样,如果有 1 个进程在运行销售项目,有 99 个进程在运行市场项目,则运行在销售项目中的那一个进程能够获得 50% 的 CPU;而市场项目中的 99 个进程必须共享 50% 的可用CPU 资源。
在 TS 资源池中,每个进程都分配了 CPU。销售项目中的那一个进程只能获得 1% 的 CPU,而市场项目中的 99 个项目将获得 99% 的可用 CPU 资源。
有关合理分配调度程序或按时间分配调度程序的更多信息,请参见《System Administration Guide: Network Service》。
您可以在测试环境中使用 Container Manager 工具来帮助预测应用程序的资源消耗情况,具体步骤如下:
安装和设置 Container Manager 软件以及所有必需的软件。
有关信息,请参见第 2 章,Container Manager 的安装和设置。
在您想监视的所有代理计算机上安装性能报告管理器。
有关更多信息,请参见第 2 章,Container Manager 的安装和设置和《Sun Management Center 3.6.1 Performance Reporting Manager User’s Guide》。
为要预测的应用程序创建一个基于应用程序的活动容器。在新建向导中,只设置最小 CPU 保留。不要设置内存容量。
有关更多信息,请参见创建基于应用程序的项目和创建基于应用程序的项目。
使用每日、每周或实时图形来监视使用了几个星期的资源。对于在单台主机上运行的容器,提供了两个图形,其中一个表示所使用的 CPU 和内存资源。您还可以查看“进程”表来监视运行在应用程序中的各个进程。
有关更多信息,请参见请求活动项目的资源使用情况报告和查看项目进程。
确定了该应用程序的最大物理内存需求之后,请修改该容器的属性以包含内存容量。请勿使容量的设置值少于该应用程序所用的最大内存。
有关更多信息,请参见使用属性表修改项目。
设置报警,这样如果所使用的内存开始超出内存容量设定值时,就可以得到通知。可使用“属性”页调整内存容量。
使用 Container Manager 确定资源使用情况趋势之后,就可以在生产环境中使用容器来整合服务器了。
有关如何计划和执行服务器整合的更多信息,请参阅 Sun 蓝皮书《Consolidation in the Data Center》(David Hornby 和 Ken Pepple 著)。有关在运行 Oracle 数据库的系统上进行服务器整合的更多信息,请参阅 Sun 白皮书《Consolidating Oracle RDBMS Instances Using Solaris Resource Manager Software》。