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

配置 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
    
    -p RG_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
    
    -p RG_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
    

    组合使用 priocntl 命令和 dispadmin 命令可确保 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
    
    -p RG_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
    

    注 –

    对于已配置为在非全局区域启动的资源(如 HAStoragePlusLogicalHostname 资源),如果将 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
    

    组合使用 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

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

    设置这些属性时,即是设置全局区域属性。

  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
    
    -p RG_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
    

    注 –

    对于已配置为在非全局区域启动的资源(如 HAStoragePlusLogicalHostname 资源),如果将 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