Sun Cluster 系統管理指南(適用於 Solaris 作業系統)

第 9 章 配置 CPU 用法的控制

如果您要控制 CPU 的用法,請配置 CPU 控制功能。如需更多有關配置 CPU 控制功能的資訊,請參閱rg_properties(5) 線上手冊。本章提供有關以下主題的資訊:

CPU 控制

Sun Cluster 可讓您控制 CPU 的用法。您在 Solaris 9 作業系統的配置選擇與在 Solaris 10 作業系統的選擇不同。

CPU 控制功能建立於 Solaris 作業系統的可用功能上。如需有關區域、專案、資源池、處理器組及排程類別的資訊,請參閱「System Administration Guide: Solaris Containers-Resource Management and Solaris Zones 」

SPARC:在 Solaris 9 作業系統上,您可以指定 CPU 共用給資源群組。

在 Solaris 10 作業系統上,您可以執行以下作業:


備註 –

除非有標示為 Solaris 9 作業系統專用,本章中的所有程序是供您在 Solaris 10 作業系統上使用。


選擇分析藍本

視您的配置選擇與作業系統版本選擇而定,您可以有不同層級的 CPU 控制。本章所述的 CPU 控制的所有層面取決於設定為 automated 資源群組特性 RG_SLM_TYPE

表 9–1 提供關於可用的不同配置分析藍本的說明。

表 9–1 CPU 控制分析藍本

說明 

操作說明 

SPARC:資源群組在 Solaris 9 作業系統上執行。 

將 CPU 共用指定給資源群組來為 project.cpu-shares 提供數值。

SPARC:如何控制 Solaris 9 作業系統上的 CPU 用法

資源群組在 Solaris 10 作業系統上的全域區域中執行。 

將 CPU 共用指定給資源群組以提供專屬處理器組中 project.cpu-shareszone.cpu-shares 及最大處理器數量的值。

無論是否已配置非全域區域,您都可以執行此程序。 

如何控制全域區域中的 CPU 用法

資源群組透過使用預設的處理器組在非全域區域中執行。 

將 CPU 共用指定給資源群組以提供專屬處理器組中 project.cpu-shareszone.cpu-shares 及最大處理器數量的值。

如果您不需要控制處理器組的大小,請執行此程序。 

如何使用預設的處理器組控制非全域區域中的 CPU 用法

資源群組透過使用專屬的處理器組在非全域區域中執行。 

將 CPU 共用指定給資源群組,此動作會為 project.cpu-shareszone.cpu-shares 及專屬處理器組中的最大處理器數量提供數值。

設定專屬處理器組中的最少處理器組數量。 

如果您要控制 CPU 共用和處理器組的大小,請執行此程序。您只能在非全域區域中透過使用專屬的處理器組來運用此控制。 

如何使用專屬處理器組控制非全域區域中的 CPU 用法

合理共享排程程式

指定 CPU 共用給資源群組的程序中的第一個步驟是為系統將排程程式設定為公平共用排程程式 (FSS)。依據預設,Solaris 作業系統的排程類別為分時排程 (TS)。將排程程式設定為 FSS 以讓共用配置生效。

無論您選擇的排程程式類別為何,您都可以建立專屬處理器組。

配置 CPU 控制

本節包括以下程序:

ProcedureSPARC:如何控制 Solaris 9 作業系統上的 CPU 用法

執行此程序以將 CPU 共用指定給執行 Solaris 9 作業系統的叢集上的資源群組。

如果已將資源群組指定給 CPU 共用,Sun Cluster 會在啟動資源群組的資源時執行以下作業:

如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。

  1. 為系統將排程程式設定為公平共用排程程式 (FSS)。


    # dispadmin -d FSS
    

    FSS 在下次重新啟動時會變成預設的排程程式。若要讓此配置立即生效,請使用 priocntl 指令。


    # priocntl -s -c FSS
    

    使用 priocntldispadmin 指令組合可確保 FSS 立即變成預設排程程式,且重新啟動後仍是如此。如需更多有關設定排程類別的資訊,請參閱 dispadmin(1M)priocntl(1) 線上手冊。


    備註 –

    如果 FSS 不是預設的排程程式,您的 CPU 共用指定將不會生效。


  2. 配置 CPU 控制功能。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=] 資源群組名稱
    
    -p RG_SLM_TYPE=automated

    讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。

    -p RG_SLM_CPU-SHARES=

    指定被指定給資源群組特定專案 project.cpu-shares 的 CPU 共用數量。

    資源群組名稱

    指定資源群組的名稱。

    此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有的資源群組。

  3. 啟動配置變更。


    # clresourcegroup online -M 資源群組名稱
    
    資源群組名稱

    指定資源群組的名稱。


    備註 –

    請勿移除或修改 SCSLM_資源群組名稱 專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。


Procedure如何控制全域區域中的 CPU 用法

執行此程序以指定 CPU 共用給將在全域區域中執行的資源群組。

如果已將資源群組指定給 CPU 共用,Sun Cluster 會在啟動全域區域中的資源群組的資源時執行以下作業:

如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。

  1. 為系統將預設排程程式設定為公平共用排程程式 (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=整數] \
    [-p defaultpsetmin=整數] \
    節點
    
    -p defaultpsetmin=defaultpsetmininteger

    設定預設處理器組中可用的最小 CPU 數量。預設值為 1。

    -p globalzoneshares=整數

    設定指定給全域區域的共用數量。預設值為 1。

    節點

    指定要設定特性的節點。

    在設定這些特性時,您就是在為全域區域設定特性。如果您沒有設定這些特性,您則無法從非全域區域中的 RG_SLM_PSET_TYPE 特性獲益。

  3. 驗證您是否已正確地設定這些特性。


    # clnode show 節點
    

    對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。

  4. 配置 CPU 控制功能。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=] 資源群組名稱
    
    -p RG_SLM_TYPE=automated

    讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。

    -p RG_SLM_CPU_SHARES=

    指定要被指定給資源群組特定專案 project.cpu-shares 的 CPU 共用數量,並決定要指定給全域區域 zone.cpu-shares 的 CPU 共用數量。

    資源群組名稱

    指定資源群組的名稱。

    在此程序中,您沒有設定 RG_SLM_PSET_TYPE 特性。在全域區域中,此特性會使用 default 值。

    此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有的資源群組。

  5. 啟動配置變更。


    # clresourcegroup online -M 資源群組名稱
    
    資源群組名稱

    指定資源群組的名稱。


    備註 –

    請勿移除或修改 SCSLM_資源群組名稱 專案。您可以手動新增更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。


Procedure如何使用預設的處理器組控制非全域區域中的 CPU 用法

如果您要指定 CPU 共用給非全域區域中的資源群組,請執行此程序,但不須建立專屬的處理器組。

如果已將資源群組指定給 CPU 共用,Sun Cluster 會在啟動非全域區域中的資源群組的資源時執行以下作業:

如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。

  1. 為系統將預設排程程式設定為公平共用排程程式 (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=整數] \
    [-p defaultpsetmin=整數] \
    節點
    
    -p globalzoneshares=整數

    設定指定給全域區域的共用數量。預設值為 1。

    -p defaultpsetmin=defaultpsetmininteger

    設定預設處理器組中可用的最少 CPU 數量。預設值為 1。

    節點

    識別要設定特性的節點。

    在設定這些特性時,您就是在為全域區域設定特性。

  3. 驗證您是否已正確地設定這些特性:


    # clnode show 節點
    

    對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。

  4. 配置 CPU 控制功能。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=] 資源群組名稱
    
    -p RG_SLM_TYPE=automated

    讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。

    -p RG_SLM_CPU_SHARES=

    指定要被指定給資源群組特定專案 (project.cpu-shares) 的 CPU 共用數量,並決定要指定給非全域區域 (zone.cpu_shares) 的 CPU 共用數量。

    資源群組名稱

    指定資源群組的名稱。

    此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有的資源群組。

    如果預設池以外的池處於區域配置或如果區域已動態連結至預設池以外的池,您無法在非全域區域中將 RG_SLM_TYPE 設為 automated。如需有關區域配置和池連結的資訊,請參閱 zonecfg(1M)poolbind(1M) 線上手冊。檢視您以下的區域配置:


    # zonecfg -z 區域名稱 info pool
    

    備註 –

    像是 HAStoragePlusLogicalHostname 的資源已配置為在非全域區域中啟動,但將 GLOBAL_ZONE 特性設為 TRUE 則是在全域區域中啟動。即使您將 RG_SLM_TYPE 特性設定為 automated,此資源不會從 CPU 共用配置中獲益,且會被視為在資源群組中一般 (RG_SLM_TYPE 設定為手動)。


    在此程序中,您沒有設定 RG_SLM_PSET_TYPE 特性。Sun Cluster 使用預設的處理器組。

  5. 啟動配置變更。


    # clresourcegroup online -M 資源群組名稱
    
    資源群組名稱

    指定資源群組的名稱。

    如果您將 RG_SLM_PSET_TYPE 設為 default,Sun Cluster 會建立池 SCSLM_pool_區域名稱,但不會建立處理器組。在此情況下,SCSLM_pool_區域名稱 會與預設處理器組關聯。

    如果不再為非全域區域中的 CPU 控制配置線上資源群組,非全域區域的 CPU 共用值會使用區域配置中的 zone.cpu-shares 數值。依據預設,此參數有一個 1 的數值。如需更多有關區域配置的資訊,請參閱 zonecfg(1M) 線上手冊。


    備註 –

    請勿移除或修改 SCSLM_資源群組名稱 專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。


Procedure如何使用專屬處理器組控制非全域區域中的 CPU 用法

如果您要讓您的資源群組在專屬處理器組中執行,請執行此程序。

如果已將資源群組配置為在專屬處理器組中執行,Sun Cluster 會在啟動非全域區域中的資源群組的資源時執行以下作業:

  1. 為系統將排程程式設定為公平共用排程程式 (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=整數] \
    [-p defaultpsetmin=整數] \
    節點
    
    -p defaultpsetmin=defaultpsetmininteger

    設定預設處理器組中可用的最少 CPU 數量。預設為 1。

    -p globalzoneshares=整數

    設定指定給全域區域的共用數量。預設為 1。

    節點

    識別要設定特性的節點。

    在設定這些特性時,您就是在為全域區域設定特性。

  3. 驗證您是否已正確地設定這些特性:


    # clnode show 節點
    

    對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。

  4. 配置 CPU 控制功能。


    # clresourcegroup create -p RG_SLM_TYPE=automated \
     [-p RG_SLM_CPU_SHARES=] \
    -p -y RG_SLM_PSET_TYPE= \
    [-p RG_SLM_PSET_MIN=] 資源群組名稱
    
    -p RG_SLM_TYPE=automated

    讓您能夠控制 CPU 控制用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。

    -p RG_SLM_CPU_SHARES=

    指定要指定給資源群組特定專案 (project.cpu-shares) 的 CPU 共用數量,並決定要指定給非全域區域 (zone.cpu-shares) 的 CPU 共用數量,以及處理器組中的最大量處理器。

    -p RG_SLM_PSET_TYPE=

    啟用建立專屬處理器組。若要有專屬處理器組,您可以將此特性設定為 strongweak。數值 strongweak 是互斥的。也就是說,您不能在相同區域中配置資源群組,這樣有些才會是 strong,有些才會是 weak

    -p RG_SLM_PSET_MIN=

    判定處理器組中的最少處理器數量。

    資源群組名稱

    指定資源群組的名稱。

    此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有的資源群組。

    如果預設池以外的池處於區域配置或如果區域已動態連結至預設池以外的池,您無法在非全域區域中將 RG_SLM_TYPE 設為 automated。如需有關區域配置和池連結的資訊,請參閱 zonecfg(1M)poolbind(1M) 線上手冊。檢視您以下的區域配置:


    # zonecfg -z 區域名稱 info pool
    

    備註 –

    像是 HAStoragePlus 的資源,或是配置為在非全域區域中啟動但 GLOBAL_ZONE 特性設為 TRUELogicalHostname資源會在全域區域中啟動。即使您將 RG_SLM_TYPE 特性設為 automated,此資源不會從 CPU 共用和專屬處理器組配置中獲益, 且會被視為在資源群組中一般 (RG_SLM_TYPE 設定為手動)。


  5. 啟動配置變更。

    資源群組名稱

    指定資源群組的名稱。


    備註 –

    請勿移除或修改 SCSLM_資源群組名稱 專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。


    在資源群組處於線上狀態時,會動態考慮對 RG_SLM_CPU_SHARESRG_SLM_PSET_MIN 所做的變更。但是,如果 RG_SLM_PSET_TYPE 已設為 strong,且如果 CPU 數量不足以容納變更,則針對 RG_SLM_PSET_MIN 要求的變更不會生效。在此情況下,螢幕上將會顯示警告訊息。在下一次交換時,由於可能發生 CPU 不足,如果沒有足夠的可用 CPU 確認您為 RG_SLM_PSET_MIN 配置的數值,則會產生錯誤。

    如果不再為非全域區域中的 CPU 控制配置線上資源群組,非全域區域的 CPU 共用值會使用 zone.cpu-shares 數值。依據預設,此參數有一個 1 的數值。