本章将介绍容器和项目的概念以及如何启动本产品。
包括以下主题:
项目就是与主机相关联的容器。项目用于组织和管理物理系统资源集合。在实现全面服务器整合计划时,项目很有用。项目提供下列功能:
为应用程序设置最小 CPU 保留和内存容量,从而对系统资源进行平衡
每个应用程序均可获得为其项目设置的最小 CPU 保留和内存容量(可选)。例如:基于应用程序的项目允许您为网络上运行的所有应用程序建立最小 CPU 保留和内存容量。当同一台主机上有多个项目处于活动状态时,由于每个应用程序均位于其各自的项目内,从而减少了系统资源的争用现象。这种情况下,为每个项目设置的资源限制是由该主机上的 Solaris 内核实施的。
将跟踪项目当前使用的资源总量,还会跟踪项目成员使用的资源量。尽管多个用户和组可能同属于一个或多个项目,但必须为每个 UNIX 用户指定一个默认项目。Unix 用户启动的进程可以绑定到该用户所属的任何项目。项目通过使用项目成员和资源池来跟踪和控制应用程序的资源消耗。
关于项目如何工作及其使用的资源管理工具的更多信息,请参阅第 1 章,Solaris Container Manager 1.1 简介。
安装并设置软件后,便会具有几个默认的项目,您可以立即使用它们。您也可以使用向导来创建自己的项目。每个项目都具有与其关联的容器。在创建新项目时,此容器可以重复使用。项目具有以下优点:
可用来创建多个具有相同 CPU 和内存资源限制的项目实例。
将多个项目实例部署到多台主机上。尽管处于活动状态的单个项目不能跨多台主机, 但同一个容器内的其他项目实例可以部署到多台主机上。
缩短新建新项目实例需要的时间,使您能够在需求波动时迅速分配资源。
GUI 是基于浏览器的,它提供三种管理视图(选项卡):一种是从主机的角度,一种是从容器的角度,最后一种是从打开的报警的角度。您可以通过创建组并选择这些组应包含哪些元素来进一步组织主机视图和容器视图。
此外,通过该软件可以轻松地检查运行于容器内部的各个进程以及当前正被使用的资源。还有若干图形选项可用来帮助访问每容器或主机的资源使用水平,包括可以将数据导出到文件中。这些功能使您能够监视资源的消耗状况并对其重新评估,从而作出适当的调整。
当容器的资源使用情况达到设置的阈值时,该软件的报警功能可通过电子邮件通知您此情况。在主机和容器两者的 GUI 中也会显示报警图标。
资源更改作业功能使您能够通过一个申请来预定更改一个或多个容器上的当前资源限制。向导会指导您完成创建或修改资源更改作业所需的一系列步骤。
名称
描述(可选)
项目类型
与容器相关联的项目名称
与容器应用程序相关联的 UNIX 用户和组
匹配表达方式(如果存在的话)
给容器指定的名称是永久性的,因此无法更改。项目名称同样也是永久性的。可以更改容器包含的其他标识信息。
该软件将保存容器;容器可供重复使用,直到被删除时为止。项目是与主机相关联的容器。与主机关联后,项目将处于活动状态,并且也设置了它的资源保留。
因为具有相同定义和资源保留的多个项目在若干个不同的主机上可以同时处于活动状态,所以容器可以方便地在数据中心管理它们。保存容器之后,任何时候都可以使用它来激活任一合适主机上的项目。因此,可以将容器用作模板来新建项目。
该容器可作为多项目模板。该容器将这些项目的共同属性储存在一个中心位置。这些项目的共同属性包括:
项目名称。
项目用来决定应该包含哪些进程的方法 (例如:与该容器或某一匹配表达方式相关联的 UNIX 用户和组。)
其他属性,比如 CPU 份额和内存限制,在活动项目所处的主机中是特定的。在 Solaris Container Manager 1.1 中,这组被集中储存的共同属性就是所谓的“容器”。当某一特定的主机激活该容器时,即把它初始化为一个 Solaris 项目,并将之保存在 /etc/project 中。
例如,某公司希望为其电子邮件应用程序设置一个容器。这些项目的共同属性将是:
项目名称:mail_services
项目用来决定应该包含哪些进程的方法将是一个包含 “mozilla” 的匹配表达方式。
当某个特定的主机激活该容器时,该公司即初始化该项目,并且此时也可以指定资源池、CPU 份额和内存限制。
您可以使用容器跨不同区域和主机创建多个项目。例如:如果您使用单个容器在三个不同的主机上创建三个活动的项目,则在这个容器中,您将拥有一个容器和三个项目。更改容器中的基本信息,将更改基于该容器的所有项目。
您可以通过该项目创建向导选择创建在所有创建步骤完成之后即可激活的项目。同时可以创建一个容器,其名称保存在 GUI 中。您还可以通过指导您完成整个创建过程的向导选择当前只创建容器,以后再激活该项目。
对于容器,您可以通过使用 GUI 来执行下列任务:
新建容器
创建新组
将容器移入和移出组
修改属性
在主机上新建项目
删除容器
对于项目,您可以通过使用 GUI 来执行下列任务:
创建新组
移动项目
修改属性
更改资源保留
创建资源更改作业
检查正在内部运行的进程的状态
请求资源使用率报告并将数据导出到文件中
取消激活或激活项目
设置报警
删除项目
实际上,项目并不实施您为某个应用程序所设置的资源消耗限制。而是在设置最小 CPU 保留和内存容量以及激活该项目后,Solaris 内核开始实施这些限制。使用项目之前,您需要了解有关项目状态的更多信息。项目所处的状态有以下三种:已定义的、活动的和非活动的。
在整个生存期内,项目可以在这些状态之间转移。
在项目本身还未完全成形的初始阶段即已创建了容器。每个项目必须具有一个唯一的名称,并且可以无期限地保存在数据库中。
图 3–2 表明,在容器与主机关联后,该项目转为活动状况了。取消激活且与主机不再关联之后,非活动的项目可以移回已定义状况。
使项目变为活动状态的第一步就是将其容器与某个主机关联起来。第二步是设置资源限制,也即为该项目指定最小的 CPU 保留和内存容量。必须将该项目与某个能够支持这些资源限制的主机关联起来。活动项目是已被推出并驻留在某个主机上的,从这种意义上来看,还可将它视为是已部署的。
使用新建项目向导创建基于应用程序的项目时,可提供匹配表达式 来标识与该应用程序关联的进程。然后与该匹配表达式相对应的所有进程将被自动移动到此容器下。在激活项目的过程中,与该容器关联的主机将在 /etc/project 数据库中创建一个条目。相应地,相匹配的进程将被移动到该容器的项目名称之下。移完这些进程之后,即收集并保存该项目所有的资源使用率数据。
取消激活项目之后,将不再对其实施资源限制。已取消激活的项目将转入非活动状况,并将被从主机的 /etc/project 文件中删除。尽管已转入非活动状况,该项目仍然存在于该软件的数据库中,并等待将来的重新激活。重新激活非活动的项目后,将重新实施该容器的资源限制。
所有与该项目处于活动状态时的资源使用率有关的数据都保留在数据库中。在取消激活该项目后的 30 天之内,您仍然可以请求其使用率报告。
Container Manager 软件不支持使用标准命令行命令进行 Solaris 软件资源管理。您应该使用 Container Manager 图形用户界面 (GUI) 管理容器。请使用浏览器从 Java Web Console 启动 GUI。受支持的浏览器有:
Solaris 8 和 Solaris 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)
如果 /var/opt/SUNWsymon/cfg/esusers 文件中没有您的 UNIX 用户 ID,请创建此条目。
该用户 ID 还必须被指定给 esadm 或 esdomadm 组。
关于创建条目和指定给组的说明,请参阅《Sun Management Center 3.5 Installation and Configuration Guide》中的“Setting Up Users”。
启动浏览器。
关于受支持的浏览器的列表,请参阅Container Manager GUI。
要访问 Container Manager GUI,可键入:
https://SunMC 服务器的主机名称:6789/containers |
屏幕上将显示 Java Web Console 登录页面。
如果没有显示登录页面,您可能需要重新启动 Java Web Console。有关说明,请参阅重新启动 Java Web Console。
控制台页面打开之后,请单击“系统”部分下面的 Solaris Container Manager 1.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 选项卡
选项卡 |
选项卡名称 |
目录 |
---|---|---|
主机(视图) |
目录 |
提供有关选定主机上资源池的信息。 |
属性 |
提供有关选定主机、区域、项目或资源池的属性的信息。 |
|
使用率 |
提供有关主机、区域、项目或池每天、每周或每月的资源使用率信息。可提供活动项目的实时使用率数据。只有安装性能报告管理器软件之后才会出现此选项卡。 |
|
项目 |
提供关于与主机相关联的项目的信息。 |
|
区域 |
提供关于与主机相关联的区域的信息。 |
|
容器(视图) |
目录 |
提供有关项目的信息。 |
属性 |
提供有关选定主机、容器、项目或资源池的属性的信息。 |
|
使用率 |
提供有关主机、区域、项目或池每天、每周或每月的资源使用率信息。可提供活动项目的实时使用率数据。只有安装性能报告管理器软件之后才会出现此选项卡。 |
|
作业(资源更改作业) |
提供有关已安排的资源更改作业的信息。从此选项卡中也可以创建新资源更改作业。注意:无法将资源更改作业与默认容器相关联。 |
|
打开的报警 |
提供有关打开的报警(包括严重性、消息、管理对象、启动时间和确认)的信息。 |
|
资源池(深入测试) |
目录 |
提供有关选定资源池上区域的信息。 |
属性 |
提供有关选定资源池的属性的信息。 |
|
使用率 |
提供有资源关池每天、每周或每月资源使用率的信息。只有安装性能报告管理器软件之后才会出现此选项卡。 |
|
项目 |
提供有关与选定资源池相关联的项目的信息。 |
|
区域(深入测试) |
目录 |
提供有关选定区域上项目的信息。 |
属性 |
提供有关选定区域属性的信息。 |
|
使用率 |
提供有关区域每天、每周或每月资源使用率的信息。只有安装性能报告管理器软件之后才会出现此选项卡。 |
|
项目(深入测试) |
属性 |
提供有关选定项目的属性的信息。 |
使用率 |
提供有关项目每天、每周或每月资源使用率的信息。只有安装性能报告管理器软件之后才会出现此选项卡。 |
|
进程 |
提供有关选定项目的进程的信息。 |
|
报警阈值 |
用于设置或删除报警阈值。 |
主机视图从主机的角度组织信息。您正在管理的代理计算机均显示在导航窗口中。当您单击主机名称旁边的展开三角形时,将显示该主机可用的资源池。您还可通过此视图管理与主机相关联的各个容器。
所有安装有此软件的代理主机均可被自动搜索到并添加到主机视图中。您可以通过导航窗左侧的选项卡访问此视图。最初,所有搜索到的代理主机均位于名为“主机”的默认组中。您可以通过创建新组并将主机移至相关的组中,以进一步组织此视图。
只有那些属于Sun Management Center 服务器环境并已安装了 Solaris Container Manager 1.1 的代理计算机才会出现在主机视图中。关于服务器环境的更多信息,请参阅《Sun Management Center 3.5 用户指南》中的“Sun Management Center 体系结构”。
表 3–1 列出了主机视图中可用的选项卡和信息。
下图显示了(与默认池相关联)的主机视图,其中含有项目表。
项目表列出了有关每个项目的信息,每行详细描述一个项目。该项目表包含以下数据:
项目的名称
容器的名称
项目的状况:活动的和非活动的
该项目所绑定的资源池
该项目驻留区域的名称。对于 Solaris 8 和 Solaris 9 主机,区域名称总是 "global"。
为该项目设置的最小 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) 的主机上拥有下列五个默认的容器:
Default
Processes with No Project
Root User
System Processes
Users with Group Staff
在 /etc/project 文件中存在着分别与这五个默认容器相对应的条目。具体来说,这五个对应的条目是:default、noproject、user.root、system 和 group.staff。
在运行 Solaris 8 版本的主机上,不存在具有 Group Staff (group.staff) 容器的用户。除此之外的其他默认容器都是相同的。
每个默认容器均处于活动状况,且将限制设置为 1 个最小 CPU 保留(CPU 份额)和无内存容量。主机默认的资源池 (pool_default) 总是与默认的容器绑定。如果您安装了性能报告管理器,则可以监视资源的使用率,并生成每个默认容器的报告。
您无法取消激活、编辑或删除这些默认的容器。这些容器均标记为“只读”。
每个 UNIX 用户均被指定给某个默认的项目,并相应指定给某个默认的容器。最初,该默认容器包含在系统上运行的所有进程。随着您陆续创建其他项目,进程将从相应的默认容器移出,并移入到您创建的项目中。
每个项目均始于容器。项目共有三种类型,具体取决于您在创建容器过程中对项目类型所作的选择。项目类型决定了该如何跟踪进程。
新建容器时,您必须选择项目类型。项目就是针对相关工作的网络级管理标识符 (ID)。所有在容器中运行的进程均具有相同的项目 ID,并且容器会跟踪该项目 ID 使用的各种资源。容器类型取决于创建该容器时所选择的项目类型。
每个容器都拥有一个项目名称,该名称是永久性的。在某主机上激活容器时,将把该项目名称添加到此主机的 /etc/project 文件中。只要该容器在此主机上处于活动状况,此条目就一直保留。
同一主机上具有相同项目名称的两个项目不能同时处于活动状况。这是因为运行在容器中的进程都以其项目 ID 进行跟踪,所以主机中的每个项目名称均必须是唯一的。
在创建基于用户的或基于组的项目时,用户名称或组名称将成为项目名称的一部分。对于基于用户的容器,该项目名称即成为 user.用户名。对于基于组的容器,该项目名称即成为 group.组名。因此,在创建基于用户的或基于组的项目时,您使用的用户名或组名不能与默认容器的 /etc/project 条目相同。有关详细信息,请参阅默认容器 。
在创建基于应用程序的容器的过程中,您可以提供一个自己选择的项目名称。项目创建向导允许基于应用程序的不同项目具有相同项目名称。但是两个具有相同项目名称的基于应用程序的项目不能同时在同一个主机上处于活动状况。只有您计划在不同的主机上激活某些容器时,才可以在创建基于应用程序的项目时重复使用这些项目名称。如果您试图在已含有某项目的主机上激活另一个与之同名的项目,该激活操作将失败。
下表详细介绍了这三种项目类型,并列举了因选择不同会出现哪些差异。
表 3–2 项目类型详细信息
项目类型 |
操作系统版本 |
详细信息 |
---|---|---|
基于用户 |
Solaris 8 |
唯一受 Solaris 8 操作系统支持的项目类型 /etc/project 文件中的项目名称变成了 user.用户名。该项目将成为用户的主默认项目。 |
|
Solaris 9 和 Solaris 10 |
/etc/project 文件中的项目名称变成了 user.用户名,并具有可以加入此项目的 UNIX 用户的列表。 有效格式为用户名。 |
基于组 |
Solaris 9 和 Solaris 10 |
/etc/project 文件中的项目名称变成了 group.组名称。 有效的格式为组名称。 |
基于应用程序 |
Solaris 9 和 Solaris 10 |
该项目名称可以是应用程序名称或其他所选的任意名称。您提供的名称将被添加到 /etc/project 文件中。 可提供匹配表达式自动将匹配进程移到该项目名称中。此表达式是区分大小写的。 必须提供(这些进程当前所属的)相应的用户名或组名。 |
在开始使用项目管理应用程序资源之前,您首先必须掌握该应用程序的资源使用率趋势。如果内存容量不足,某些应用程序(如 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 份额划分为 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 使用合理分配调度程序 (FSS) 来确保您设置的最小 CPU 份额。 合理分配调度程序是默认的调度程序。通过用项目的份额除以活动项目的份额总数,合理分配调度程序可计算出分配给该项目的 CPU 比例。活动项目就是至少有一个进程在使用 CPU 的项目。不计空闲项目(即不含有活动进程的项目)所拥有的份额。
例如,假设您已分别为销售、营销和数据库这三个项目分配了 2、1 和 4 个份额。这三个项目都是活动的。则资源池的 CPU 资源是这样分配的:销售项目获得 2/7 的 CPU 资源;营销项目获得 1/7 的 CPU 资源;数据库项目获得 4/7 的 CPU 资源。如果销售项目是空闲的,则营销项目将获得 1/5,数据库项目将获得 4/5 的 CPU 资源。
注意:合理分配调度程序只有在出现 CPU 争用时才会限制 CPU 的使用。如果系统中只有一个项目是活动的,则该项目可以使用 100% 的 CPU,而不管它所持有的份额数是多少。这样便不会浪费 CPU 周期。如果某项目因为没有任务可执行而未完全使用指定给它的 CPU,则其余的 CPU 资源将分发给其他活动的进程。如果某项目未定义任何 CPU 份额,那么将给它分配 1 个份额。如果项目的份额数为零,则其进程的系统优先权最低。只有在具有非零份额的项目不使用 CPU 资源时,这些进程才会运行。
按时间分配调度程序 (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 Services》。
您可以在测试环境中借助 Container Manager 来预测应用程序的资源消耗情况,具体步骤如下:
安装和设置 Container Manager 软件以及所需的其他软件。
有关信息,请参阅第 2 章,Container Manager 的安装和设置。
在您想监视的所有代理主机上安装性能报告管理器。
有关详细信息,请参阅第 2 章,Container Manager 的安装和设置以及《Sun Management Center 3.5 性能报告管理器用户指南》。
为要预测的应用程序创建一个基于应用程序的活动容器。在新建容器向导中,只设置最小 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》。