本章将介绍容器和项目的概念以及如何启动本产品。
包括以下主题:
项目是与主机相关联的容器。项目用于组织和管理物理系统资源的集合。在执行全面服务器整合计划时,项目很有用。项目提供以下功能:
为应用程序设置最小 CPU 保留和内存容量,从而对系统资源进行平衡。
每个应用程序均可获得为其项目设置的最小 CPU 保留和内存容量(可选)。例如:基于应用程序的项目允许您为网络上运行的所有应用程序建立最小 CPU 保留量和内存容量。当同一台主机上有多个项目处于活动状态时,由于每个应用程序均位于其各自的项目内,从而减少了系统资源的争用现象。这种情况下,为每个项目设置的资源限制是由该主机上的 Solaris 内核执行的。
将跟踪项目当前使用的资源总量,还会跟踪项目成员使用的资源量。尽管多个用户和组可能同属于一个或多个项目,但必须为每个 UNIX 用户指定一个默认项目。Unix 用户启动的进程可以绑定到该用户所属的任何项目。项目通过使用项目成员和资源池来跟踪和控制应用程序的资源消耗。
有关项目的工作方式以及项目使用的资源管理工具的更多信息,请参见第 1 章,Solaris Container Manager 3.6 简介。
安装并设置软件后,便会具有几个默认的项目,您可以立即使用它们。也可以使用向导来创建自己的项目。每个项目都具有与其关联的容器。在创建新项目时,此容器可以重复使用。项目具有以下优点:
可用来创建多个具有相同 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。受支持的浏览器有:
Solaris 版本 8 和 9 上的 Netscape NavigatorTM 4.7x、6.2x 和 7.x
Microsoft Windows (98/2000/XP) 上的 Netscape Navigator 4.7x、6.2x 和 7.x
MozillaTM 1.4 和更高版本
Microsoft Windows (98/2000/XP) 上的 Internet Explorer 5.0 和更高版本(包括 6.x)
如果您的 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链接以访问 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 选项卡
选项卡 |
标签名 |
内容 |
---|---|---|
主机(视图) |
内容 |
提供有关选定主机上资源池的信息。 |
属性 |
提供有关选定主机、区域、项目或资源池的属性的信息。 |
|
使用情况 |
提供有关主机、区域、项目或池每日、每周或每月资源使用情况的信息。可以获得活动项目的实时使用情况数据。只有已安装性能报告管理器软件,此选项卡才是可见的。 |
|
项目 |
提供关于与主机相关联的项目的信息。 |
|
区域 |
提供关于与主机相关联的区域的信息。 |
|
容器(视图) |
内容 |
提供有关项目的信息。 |
属性 |
提供有关选定主机、容器、项目或资源池的属性的信息。 |
|
使用情况 |
提供有关主机、区域、项目或池每日、每周或每月资源使用情况的信息。可以获得活动项目的实时使用情况数据。只有已安装性能报告管理器软件,此选项卡才是可见的。 |
|
作业(资源更改作业) |
提供有关已安排的资源更改作业的信息。还可以从此选项卡新建一个资源更改作业。注意:默认容器无法将资源更改作业与其相关联。 |
|
打开的报警 |
提供有关打开的报警(包括严重性、消息、管理对象、启动时间和确认)的信息。 |
|
资源池(深入测试) |
内容 |
提供有关选定资源池上区域的信息。 |
属性 |
提供有关选定资源池属性的信息。 |
|
使用情况 |
提供有关池每日、每周或每月资源使用情况的信息。只有已安装性能报告管理器软件,此选项卡才是可见的。 |
|
项目 |
提供有关与选定资源池相关联的项目的信息。 |
|
区域(深入测试) |
内容 |
提供有关选定区域上项目的信息。 |
属性 |
提供有关选定区域属性的信息。 |
|
使用情况 |
提供有关区域每日、每周或每月资源使用情况的信息。只有已安装性能报告管理器软件,此选项卡才是可见的。 |
|
项目(深入测试) |
属性 |
提供有关选定项目的属性的信息。 |
使用情况 |
提供有关项目每日、每周或每月资源使用情况的信息。只有已安装性能报告管理器软件,此选项卡才是可见的。 |
|
进程 |
提供有关选定项目的进程的信息。 |
|
报警阈值 |
用于设置或删除报警阈值。 |
主机视图从主机的角度组织信息。您正在管理的代理机器均显示在导航窗口。当单击主机名称旁边的展开三角形时,将显示每台主机的可用资源池。还可以根据此视图管理与主机相关联的各个容器。
自动搜索所有已安装此软件的代理主机并将其添加到主机视图中。从导航窗口中的左选项卡可访问此视图。一开始将所有搜索到的代理主机放在名为“主机”的默认组中。可以通过创建新组并将主机移到相关的组中,进一步组织此视图。
只有那些处于 Sun Management Center 服务器环境中,并且安装了 Solaris Container Manager 3.6 的代理计算机才会加载到主机视图中。有关服务器环境的更多信息,请参见《Sun Management Center 3.6 用户指南》中的“作业管理概念”。
表 3–1 列出了主机视图中可用的选项卡和信息。
下图显示了附带项目表(与默认池相关联)的主机视图。
该项目表列出了有关每个项目的信息,每行详细描述一个项目。该项目表包含以下数据:
项目名称
容器名称
项目状态:活动的和非活动的
该项目所绑定的资源池
该项目驻留区域的名称。对于 Solaris 8 和 Solaris 9 主机,区域名称总是全局的。
为该项目设置的最小 CPU 份额
该项目正在使用的 CPU 数量
最大内存限制 (MB)
该项目使用的内存 (MB)
允许在此项目内运行的各进程使用的内存总量 (MB)
该资源池表介绍了有关每个资源池的信息。该资源池表列出了以下数据:
资源池的名称
当前为该资源池设置的 CPU 数
该资源池中未指定给这些区域或项目的 CPU 份额
为该资源池设置的调度程序:按时间分配调度程序或合理分配调度程序
为该资源池设置的 CPU 份额
为该资源池设置的 CPU 最小值
为该资源池设置的 CPU 最大值
该区域表介绍了有关每个区域的信息。该区域表列出了以下数据:
该区域的名称
该区域的状态:已配置、不完整、已安装、就绪、正在运行、正在关闭或关机
该区域作为虚拟主机唯一的名称
从根 (/) 目录开始的绝对路径
该区域的 IP 地址
分配给该区域中各项目的 CPU 份额数
可分配给与此区域关联的项目的 CPU 份额数
分配给该资源池中此区域的 CPU 份额数
该区域的资源池
容器视图从容器的角度组织信息。所有的容器和项目均显示在导航窗口中。由于容器可重复用于新建项目,所以可以从此视图轻松地访问这些容器,以及执行其他各种管理任务。
在完成安装与设置后, 容器视图会自动将该容器组添加为默认的组。从容器视图管理容器。
下图显示了容器视图。
表 3–1 列出了容器视图中包含的可用信息。
该主机视图包含默认的组主机。在安装该软件后搜索到的所有主机都放置在此组中。同样地,容器视图含有一个名为 Default 的默认组, 其中放置了主机所包含的所有容器。可以在每个视图中创建附加组以组织这些主机和容器。
可以使用组来组织数据中心中包含的十个或数百个系统。例如:可以将这些聚在一起的主机放入某个组。可以将同一用户(内部的或外部的)或部门拥有的各个容器放入某个组。同样地,可以将具有类似应用程序的容器放入某个组。
如果尚未打开 Container Manager GUI, 请按要启动Container Manager GUI中所述打开它。
从导航窗口选择适当的视图。
对于新的容器组,请选择容器视图。该容器表显示在右窗格中。
对于新的主机组,请选择 主机视图。“主机”表和“组”表均显示在右窗格中。
单击“新建组”按钮。
屏幕上将显示一个对话框。
键入该组的名称并单击“确定”。
键入的名称不能超过 32 个字符。
新组显示在选中的视图中。
如果尚未打开 Container Manager GUI, 请按要启动Container Manager GUI中所述打开它。
从导航窗口选择适当的视图。
要将容器移到别的组,可选择容器视图。该容器表显示在右侧窗格中。
要将主机移到别的组,可选择主机视图。“主机”表和“组”表均显示在右窗格中。
在右侧窗格中,请单击“移动”按钮。
弹出的对话框会列出一些可用的组。
选择将容器或主机移入其中的组。
单击 “确定” 。
将容器或主机移入选定的组中。
在安装该软件后,最初会把容器视图装入一个标题为 Default 的组中。此组在运行 Solaris 9 或 Solaris 10 操作系统 (OS) 的主机上拥有下列五个默认的容器:
默认值
不带项目的进程
超级用户
系统进程
带组成员的用户
这五个默认的容器中每一个在 /etc/project 文件中均有相对应的条目。具体来说,这五个对应的条目是: default、 noproject、user.root、 system 和group.staff。
在运行 Solaris 8 版本的主机上,不存在带 Group Staff (group.staff) 容器的用户。否则,这些默认的容器是相同的。
每个默认容器均处于活动状态,且将最小 CPU 保留(CPU 份额)和无内存容量的限制设置为 1 。默认的容器始终绑定到该主机默认的资源池 (pool_default) 上。如果安装了性能报告管理器,可以监视资源的使用情况,并运行每个默认容器的报告。
无法取消激活、编辑或删除这些默认的容器。相应地将每个容器均标记为“只读”。
将每个 UNIX 用户指定到某个默认的项目,并相应指定一个默认的容器。最初,该默认容器包含在此系统上运行的所有进程。随着您创建项目,进程将从相应的默认容器移出,并移入到您创建的项目中。
每个项目均以容器开始。项目可以有三种类型,具体取决于项目创建过程中所作的选择。项目类型决定了该如何跟踪进程。
创建新容器时,必须选择项目类型。项目就是针对相关工作的网络级管理标识符 (ID)。所有在容器中运行的进程均具有相同的项目 ID,并且容器会跟踪各种使用该项目 ID 的资源。容器类型取决于创建该容器时所选择的项目类型。
每个容器都拥有属于信息中永久性部分的项目名称。在某主机上激活容器时,将把该项目名称添加到此主机的 /etc/project 文件中。只要该容器在此主机上处于活动状态,此条目将一直保留。
同一主机上拥有相同项目名称的两个项目不能同时处于活动状态。这是因为运行在容器中的进程都用该项目 ID 进行跟踪,所以主机中的每个项目名称均必须是唯一的。
在创建基于用户的或基于组的项目时,用户名称或组名称将成为项目名称的一部分。对于基于用户的容器,该项目名称成为 user.username 格式。对于基于组的容器,该项目名称成为 group.groupname 格式。因此,在创建基于用户的或基于组的项目时,使用的用户名或组名不能与默认容器的 /etc/project 条目相同。有关更多信息,请参见默认容器。
在基于应用程序容器的创建过程中,您可以提供一个自己选择的项目名称。该项目创建向导允许基于应用程序的不同项目具有相同项目名称。但是两个基于应用程序的项目具有相同的项目名称时,不能同时在同一台主机上处于活动状态。只有计划在不同的主机上激活这些容器时,才能在创建基于应用程序的项目时重复使用这些项目名称。如果试图在所含项目已经拥有相同项目名称的主机上激活下一个项目,该激活操作将失败。
下表介绍了有关三种可用项目类型的详细信息以及基于所作的选择会出现哪些变化的详细信息。
表 3–2 项目类型详细信息
项目类型 |
操作系统版本 |
详细信息 |
---|---|---|
基于用户的 |
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 only 是一个可用的资源池。pool_default 拥有 100 个单位 的 CPU 份额值。
在运行 Solaris 9 和 Solaris 10 操作系统的主机上,新建资源池时您就确定了该池要使用 CPU 份额值。 Solaris 容器管理器给出了一个默认值,但是可以输入任意一个整数。一些系统管理员按照惯用原则,为该资源池可用的所有 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 份额(如果资源池被分为 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 资源时这些进程才会运行。
按时间分配调度程序 (Timesharing Scheduler, TS) 根据优先级分配 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 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。