Sun Cluster 系统管理指南(适用于 Solaris OS)

第 9 章 对 CPU 使用控制的配置

如果要控制 CPU 使用情况,请对 CPU 控制工具进行配置。有关配置 CPU 控制工具的更多信息,请参见 rg_properties(5) 手册页。本章介绍了以下相关主题:

CPU 控制介绍

Sun Cluster 软件使您可以控制 CPU 使用情况。在 Solaris 9 OS 上可供选择的配置与在 Solaris 10 OS 上可供选择的配置不同。

CPU 控制工具是在 Solaris OS 所提供功能的基础上构建的。有关区域、项目、资源池、处理器集和调度类的信息,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》

SPARC:在 Solaris 9 OS 上,您可将 CPU 份额分配给资源组。

在 Solaris 10 OS 上,您可执行以下操作:


注 –

本章中的所有过程均用于 Solaris 10 OS,除非声明仅针对 Solaris 9 OS。


选择方案

根据您所选择的配置和操作系统版本的具体情况,CPU 控制级别会各不相同。本章所介绍的 CPU 控制的各个方面均依赖一个前提条件,即资源组属性 RG_SLM_TYPE 设置为 automated

表 9–1 提供了各种可用配置方案的说明。

表 9–1 CPU 控制方案

描述 

指导 

SPARC:资源组在 Solaris 9 OS 上运行 

通过给 project.cpu-shares 赋值来向资源组分配 CPU 份额。

SPARC:如何控制 Solaris 9 OS 上的 CPU 使用情况

资源组在 Solaris 10 OS 上的全局群集投票节点中运行 

通过给 project.cpu-shareszone.cpu-shares 赋值来向资源组和区域分配 CPU 份额

无论是否配置了全局群集非投票节点,您都可以执行此过程。 

如何在全局群集上的投票节点中控制 CPU 使用情况

资源组使用默认处理器集在全局群集非投票区域中运行 

通过给 project.cpu-shareszone.cpu-shares 赋值来向资源组和区域分配 CPU 份额

如果您无需控制处理器集的大小,请执行此过程。 

如何在具有默认处理器集的全局群集非投票节点中控制 CPU 使用情况

资源组使用专用处理器集在全局群集非投票节点中运行 

通过给 project.cpu-shareszone.cpu-shares 和专用处理器集中的最大处理器数赋值来向资源组分配 CPU 份额。

设置专用处理器集中的最小处理器集数。 

如果要控制 CPU 份额和处理器集的大小,请执行此过程。您只能使用专用处理器集在全局群集非投票节点中实施此控制。 

如何在具有专用处理器集的全局群集非投票节点中控制 CPU 使用情况

合理分配调度程序

给资源组分配 CPU 份额的过程的第一步是将系统的调度程序设置为公平份额调度器 (Fair Share Scheduler, FSS)。默认情况下,Solaris OS 的调度类是分时调度 (Timesharing Schedule, TS)。请将调度程序设置为 FSS 以使份额配置生效。

无论选择怎样的调度程序类,您均可创建一个专用处理器集。

配置 CPU 控制

本节包括以下过程:

ProcedureSPARC:如何控制 Solaris 9 OS 上的 CPU 使用情况

执行此过程可将 CPU 份额分配给运行 Solaris 9 OS 的群集上的资源组。

如果某个资源组得到 CPU 份额,Sun Cluster 软件将在启动该资源组的资源时执行以下任务:

有关配置 CPU 控制工具的更多信息,请参见 rg_properties(5) 手册页。

  1. 将系统的调度器设置为公平份额调度器 (Fair Share Scheduler, FSS)。


    # dispadmin -d FSS
    

    下次重新引导时,FSS 将成为默认调度程序。要使此配置立即生效,请使用 priocntl 命令。


    # priocntl -s -c FSS
    

    组合使用 priocntl 命令和 dispadmin 命令可确保 FSS 立即成为默认调度器,并在重新引导后也保持不变。有关设置调度类的更多信息,请参见 dispadmin(1M)priocntl(1) 手册页。


    注 –

    如果 FSS 不是默认调度程序,您分配的 CPU 份额将不会生效。


  2. 配置 CPU 控制工具。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -pRG_SLM_TYPE=automated

    允许您控制 CPU 使用情况,并自动执行一些步骤以在 Solaris OS 中配置系统资源管理。

    -p RG_SLM_CPU-SHARES= value

    指定分配给资源组特定项目的 CPU 份额数,即 project.cpu-shares

    resource_group_name

    指定资源组的名称。

    这步操作将创建一个资源组。此外,您还可使用 clresourcegroup set 命令修改现有资源组。

  3. 激活配置更改。


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    指定资源组的名称。


    注 –

    请不要删除或修改 SCSLM_resource_group_name 项目。您可以手动将更多资源控制添加到项目中,例如,通过配置 project.max-lwps 属性。有关更多信息,请参见 projmod(1M) 手册页。


Procedure如何在全局群集上的投票节点中控制 CPU 使用情况

执行此过程可为将在全局群集投票节点中执行的资源组分配 CPU 份额。

如果某个资源组分配有 CPU 份额,则当 Sun Cluster 软件在全局群集投票节点中启动该资源组的资源时,将执行以下任务:

有关配置 CPU 控制工具的更多信息,请参见 rg_properties(5) 手册页。

  1. 将系统的默认调度程序设置为公平份额调度器 (Fair Share Scheduler, FSS)。


    # dispadmin -d FSS
    

    下次重新引导时,FSS 将成为默认调度程序。要使此配置立即生效,请使用 priocntl 命令。


    # priocntl -s -C FSS
    

    组合使用 priocntl 命令和 dispadmin 命令可确保 FSS 立即成为默认调度器,并在重新引导后也保持不变。有关设置调度类的更多信息,请参见 dispadmin(1M)priocntl(1) 手册页。


    注 –

    如果 FSS 不是默认调度程序,您分配的 CPU 份额将不会生效。


  2. 在每个要使用 CPU 控制的节点上,配置全局群集投票节点的份额数以及默认处理器集中可用 CPU 的最小数目。

    设置这些参数有助于避免在投票节点中运行的进程与在非投票节点中运行的进程争用 CPU。如果没有给 globalzonesharesdefaultpsetmin 属性赋值,这些属性将采用各自的默认值。


    # clnode set [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p defaultpsetmin= defaultpsetmininteger

    设置默认处理器集中可用的最小 CPU 份额数。默认值为 1。

    -p globalzoneshares= integer

    设置分配给投票节点的份额数。默认值为 1。

    node

    指定要设置其属性的节点。

    设置这些属性即是设置投票节点的属性。如果您不设置这些属性,则无法得益于非投票节点中的 RG_SLM_PSET_TYPE 属性。

  3. 检验是否正确设置了这些属性。


    # clnode show node
    

    对于您指定的节点,clnode 命令可显示属性集以及为这些属性设置的值。如果未使用 clnode 设置 CPU 控制属性,这些属性将采用默认值。

  4. 配置 CPU 控制工具。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -pRG_SLM_TYPE=automated

    允许您控制 CPU 使用情况,并自动执行一些步骤以在 Solaris OS 中配置系统资源管理。

    -p RG_SLM_CPU_SHARES= value

    指定分配给资源组特定项目的 CPU 份额数(即 project.cpu-shares),并确定分配给投票节点的 CPU 份额数(即 zone.cpu-shares)。

    resource_group_name

    指定资源组的名称。

    在此过程中,未设置 RG_SLM_PSET_TYPE 属性。在投票节点中,该属性采用 default 值。

    这步操作将创建一个资源组。此外,您还可使用 clresourcegroup set 命令修改现有资源组。

  5. 激活配置更改。


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    指定资源组的名称。


    注 –

    请不要删除或修改 SCSLM_resource_group_name 项目。您可以手动将更多资源控制添加到项目中,例如,通过配置 project.max-lwps 属性。有关更多信息,请参见 projmod(1M) 手册页。


Procedure如何在具有默认处理器集的全局群集非投票节点中控制 CPU 使用情况

如果想要为全局群集非投票节点中的资源组分配 CPU 份额,但不需要创建专用的处理器集,请执行此过程。

如果某个资源组分配有 CPU 份额,则当 Sun Cluster 软件在非投票节点中启动该资源组的资源时,将执行以下任务:

有关配置 CPU 控制工具的更多信息,请参见 rg_properties(5) 手册页。

  1. 将系统的默认调度程序设置为公平份额调度器 (Fair Share Scheduler, FSS)。


    # dispadmin -d FSS
    

    下次重新引导时,FSS 将成为默认调度程序。要使此配置立即生效,请使用 priocntl 命令:


    # priocntl -s -C FSS
    

    组合使用 priocntldispadmin 命令可确保 FSS 立即成为默认调度器,并在重新引导后也保持不变。有关设置调度类的更多信息,请参见 dispadmin(1M)priocntl(1) 手册页。


    注 –

    如果 FSS 不是默认调度程序,您分配的 CPU 份额将不会生效。


  2. 在每个要使用 CPU 控制的节点上,配置全局群集投票节点的份额数以及默认处理器集中可用 CPU 的最小数目。

    设置这些参数有助于避免在投票节点中运行的进程与在全局群集非投票节点中运行的进程争用 CPU。如果没有给 globalzonesharesdefaultpsetmin 属性赋值,这些属性将采用各自的默认值。


    # clnode set [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p globalzoneshares= integer

    设置分配给投票节点的份额数。默认值为 1。

    -p defaultpsetmin= defaultpsetmininteger

    设置默认处理器集中可用的最小 CPU 数。默认值为 1。

    node

    标识要设置其属性的节点。

    设置这些属性即是设置投票节点的属性。

  3. 检验是否正确设置了这些属性:


    # clnode show node
    

    对于您指定的节点,clnode 命令可显示属性集以及为这些属性设置的值。如果未使用 clnode 设置 CPU 控制属性,这些属性将采用默认值。

  4. 配置 CPU 控制工具。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] resource_group_name
    
    -pRG_SLM_TYPE=automated

    允许您控制 CPU 使用情况,并自动执行一些步骤以在 Solaris OS 中配置系统资源管理。

    -p RG_SLM_CPU_SHARES= value

    指定分配给资源组特定项目的 CPU 份额数 (project.cpu-shares),并确定分配给全局群集非投票节点的 CPU 份额数 ( zone.cpu_shares)。

    resource_group_name

    指定资源组的名称。

    这步操作将创建一个资源组。此外,您还可使用 clresourcegroup set 命令修改现有资源组。

    如果区域配置中包含默认池以外的池,或者该区域动态绑定到默认池以外的池,则您不能在非投票节点中将 RG_SLM_TYPE 设置为 automated。有关区域配置和池绑定的信息,请分别参见 zonecfg(1M)poolbind(1M) 手册页。查看区域配置,如下所示:


    # zonecfg -z zone_name info pool
    

    注 –

    对于已配置为在非投票节点中启动的资源(如 HAStoragePlus LogicalHostname 资源),如果将 GLOBAL_ZONE 属性设置为 TRUE,它将在投票节点中启动。即使将 RG_SLM_TYPE 属性设置为 automated,该资源仍无法得益于 CPU 份额配置,并将被视为 RG_SLM_TYPE 设置为 manual 的资源组中的资源。


    在此过程中,未设置 RG_SLM_PSET_TYPE 属性。Sun Cluster 使用默认处理器集。

  5. 激活配置更改。


    # clresourcegroup online -M resource_group_name
    
    resource_group_name

    指定资源组的名称。

    如果将 RG_SLM_PSET_TYPE 设置为 default,Sun Cluster 将创建一个名为 SCSLM_pool_zone_name 的池,但不创建处理器集。在这种情况下,SCSLM_pool_zone_name 与默认处理器集关联。

    如果不再为非投票节点中的 CPU 控制配置联机资源组,则非投票节点的 CPU 份额值将采用区域配置中 zone.cpu-shares 的值。该参数的默认值为 1。有关区域配置的更多信息,请参见 zonecfg(1M) 手册页。


    注 –

    请不要删除或修改 SCSLM_resource_group_name 项目。您可以手动将更多资源控制添加到项目中,例如,通过配置 project.max-lwps 属性。有关更多信息,请参见 projmod(1M) 手册页。


Procedure如何在具有专用处理器集的全局群集非投票节点中控制 CPU 使用情况

如果您想让您的资源组在专用处理器集中执行,请执行此过程。

如果某个资源组配置为在专用处理器集中执行,则当 Sun Cluster 软件在全局群集非投票节点中启动该资源组的资源时,将执行以下任务:

  1. 将系统的调度程序设置为公平份额调度器 (Fair Share Scheduler, FSS)。


    # dispadmin -d FSS
    

    下次重新引导时,FSS 将成为默认调度程序。要使此配置立即生效,请使用 priocntl 命令。


    # priocntl -s -C FSS
    

    组合使用 priocntldispadmin 命令可确保 FSS 立即成为默认调度器,并在重新引导后也保持不变。有关设置调度类的更多信息,请参见 dispadmin(1M)priocntl(1) 手册页。


    注 –

    如果 FSS 不是默认调度程序,您分配的 CPU 份额将不会生效。


  2. 在每个要使用 CPU 控制的节点上,配置全局群集投票节点的份额数以及默认处理器集中可用 CPU 的最小数目。

    设置这些参数有助于避免在投票节点中运行的进程与在非投票节点中运行的进程争用 CPU。如果没有给 globalzonesharesdefaultpsetmin 属性赋值,这些属性将采用各自的默认值。


    # clnode set  [-p globalzoneshares=integer] \
    [-p defaultpsetmin=integer] \
    node
    
    -p defaultpsetmin= defaultpsetmininteger

    设置默认处理器集中可用的最小 CPU 数。默认值为 1。

    -p globalzoneshares= integer

    设置分配给投票节点的份额数。默认值为 1。

    node

    标识要设置其属性的节点。

    设置这些属性即是设置投票节点的属性。

  3. 检验是否正确设置了这些属性:


    # clnode show node
    

    对于您指定的节点,clnode 命令可显示属性集以及为这些属性设置的值。如果未使用 clnode 设置 CPU 控制属性,这些属性将采用默认值。

  4. 配置 CPU 控制工具。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=value] \
    -p -y RG_SLM_PSET_TYPE=value \
    [-p RG_SLM_PSET_MIN=value] resource_group_name
    
    -pRG_SLM_TYPE=automated

    允许您控制 CPU 使用情况,并自动执行一些步骤以在 Solaris OS 中配置系统资源管理。

    -p RG_SLM_CPU_SHARES= value

    指定分配给资源组特定项目的 CPU 份额数 (project.cpu-shares),并确定分配给非投票节点的 CPU 份额数 (zone.cpu-shares ) 以及处理器集中处理器的最大数目。

    -p RG_SLM_PSET_TYPE= value

    允许创建专用处理器集。如果有专用处理器集,可将此属性设置为 strongweak。值 strongweak 是互斥的。也就是说,对于在同一区域中的多个资源组,不能将一部分配置为 strong,而将另一部分配置为 weak

    -p RG_SLM_PSET_MIN= value

    确定处理器集中的最小处理器数。

    resource_group_name

    指定资源组的名称。

    这步操作将创建一个资源组。此外,您还可使用 clresourcegroup set 命令修改现有资源组。

    如果区域配置中包含默认池以外的池,或者该区域动态绑定到默认池以外的池,则您不能在非投票节点中将 RG_SLM_TYPE 设置为 automated。有关区域配置和池绑定的信息,请分别参见 zonecfg(1M)poolbind(1M) 手册页。查看区域配置,如下所示:


    # zonecfg -z zone_name info pool
    

    注 –

    对于已配置为在非投票节点中启动的资源(如 HAStoragePlus LogicalHostname 资源),如果将 GLOBAL_ZONE 属性设置为 TRUE,则它将在投票节点中启动。即使将 RG_SLM_TYPE 属性设置为 automated,该资源仍不能得益于 CPU 份额和专用处理器集配置,并将被视为 RG_SLM_TYPE 设置为 manual 的资源组中的资源。


  5. 激活配置更改。

    resource_group_name

    指定资源组的名称。


    注 –

    请不要删除或修改 SCSLM_resource_group_name 项目。您可以手动将更多资源控制添加到项目中,例如,通过配置 project.max-lwps 属性。有关更多信息,请参见 projmod(1M) 手册页。


    在资源组联机时对 RG_SLM_CPU_SHARESRG_SLM_PSET_MIN 进行的更改将动态应用。但是,如果 RG_SLM_PSET_TYPE 设置为 strong,且现有 CPU 不足以处理所做更改,则对 RG_SLM_PSET_MIN 进行的更改将不会应用。此时,屏幕显示一条警告消息。下次切换时,如果 CPU 不足以处理您为 RG_SLM_PSET_MIN 配置的值,则会发生因 CPU 不足而导致的错误。

    如果不再为非投票节点中的联机资源组配置 CPU 控制,则非投票节点的 CPU 份额值将采用 zone.cpu-shares 的值。该参数的默认值为 1