如果您要控制 CPU 的用法,請配置 CPU 控制功能。如需更多有關配置 CPU 控制功能的資訊,請參閱「rg_properties(5) 線上手冊」。本章提供有關以下主題的資訊:
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 作業系統上,您可以執行以下作業:
指定 CPU 共用給資源群組。
指定處理器給資源群組。
除非有標示為 Solaris 9 作業系統專用,本章中的所有程序是供您在 Solaris 10 作業系統上使用。
視您的配置選擇與作業系統版本選擇而定,您可以有不同層級的 CPU 控制。本章所述的 CPU 控制的所有層面取決於設為 automated 的資源群組特性 RG_SLM_TYPE。
表 9–1 提供可用的不同配置分析藍本的說明。
表 9–1 CPU 控制分析藍本
說明 |
指示 |
---|---|
SPARC:資源群組在 Solaris 9 作業系統上執行。 將 CPU 共用指定給資群群組,即提供 project.cpu-shares 值。 | |
資源群組在 Solaris 10 作業系統上的全域區域中執行。 將 CPU 共用指定給資源群組和區域,即提供 project.cpu-shares 值、zone.cpu-shares 值及專屬處理器組中最大處理器數量值。 無論是否已配置非全域區域,您都可以執行此程序。 | |
資源群組透過使用預設的處理器組在非全域區域中執行。 將 CPU 共用指定給資源群組和區域,即提供 project.cpu-shares 值、zone.cpu-shares 值及專屬處理器組中最大處理器數量值。 如果您不需要控制處理器組的大小,請執行此程序。 | |
資源群組透過使用專屬處理器組在非全域區域中執行。 將 CPU 共用指定給資源群組,即提供 project.cpu-shares 值、zone.cpu-shares 值及專屬處理器組中最大處理器數量值。 設定專屬處理器組中的最少處理器組數量。 如果您要控制 CPU 共用和處理器組的大小,請執行此程序。您只能在非全域區域中透過使用專屬處理器組來運用此控制。 |
將 CPU 共用指定給資源群組的程序中,第一個步驟是為系統將排程程式設定為公平共用排程程式 (FSS)。依預設,Solaris 作業系統的排程類別為分時排程 (TS)。將排程程式設定為 FSS 以讓共用配置生效。
無論您選擇的排程程式類別為何,您都可以建立專屬處理器組。
本節包括以下程序:
執行此程序,將 CPU 共用指定給執行 Solaris 9 作業系統的叢集上的資源群組。
如果已為資源群組指定 CPU 共用,Sun Cluster 軟體會在啟動該資源群組的資源時執行以下作業:
如果專案尚未存在,則會建立名為 SCSLM_resourcegroup_name 的專案。此專案為資源群組專用,且已指定特定數量的 CPU 共用 (project.cpu_shares)。
啟動 SCSLM_resourcegroup_name 專案中的資源。
如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。
# dispadmin -d FSS |
FSS 在下次重新啟動時會變成預設的排程程式。若要讓此配置立即生效,請使用 priocntl 指令。
# priocntl -s -c FSS |
使用 priocntl 和 dispadmin 指令組合可確保 FSS 立即變成預設排程程式,且重新啟動後仍是如此。如需更多有關設定排程類別的資訊,請參閱 dispadmin(1M) 與 priocntl(1) 線上手冊。
如果 FSS 不是預設的排程程式,您的 CPU 共用指定將不會生效。
配置 CPU 控制功能。
# clresourcegroup create -p RG_SLM_TYPE=automated \ [-p RG_SLM_CPU_SHARES=value] resource_group_name |
讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。
指定被指定給資源群組特定專案 project.cpu-shares 的 CPU 共用數量。
指定資源群組的名稱。
此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有的資源群組。
啟動配置變更。
# clresourcegroup online -M resource_group_name |
指定資源群組的名稱。
請勿移除或修改 SCSLM_resource_group_name專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。
執行此程序,將 CPU 共用指定給將在全域區域中執行的資源群組。
如果已為資源群組指定 CPU 共用,Sun Cluster 軟體會在啟動全域區域中資源群組的資源時執行以下作業:
以特定數量的 CPU 共用擴增指定給全域區域 ( zone.cpu-共用) 的 CPU 共用數量 (若尚未這樣做)。
如果還沒建立專案,請在全域區域中建立名為 SCSLM_resourcegroup_name 的專案。此專案為資源群組專用,且已為其指定特定數量的 CPU 共用 (project.cpu-shares)。
啟動 SCSLM_resourcegroup_name 專案中的資源。
如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。
為系統將預設排程程式設定為公平共用排程程式 (FSS)。
# dispadmin -d FSS |
FSS 在下次重新啟動時會變成預設的排程程式。若要讓此配置立即生效,請使用 priocntl 指令。
# priocntl -s -C FSS |
使用 priocntl 和 dispadmin 指令組合可確保 FSS 立即變成預設排程程式,且重新啟動後仍是如此。如需更多有關設定排程類別的資訊,請參閱 dispadmin(1M) 與 priocntl(1) 線上手冊。
如果 FSS 不是預設的排程程式,您的 CPU 共用指定將不會生效。
在每個要使用 CPU 控制的節點上,配置全域區域的共用數量和預設處理器組中可用的最少 CPU 數量
設定這些參數有助於避免全域區域中執行的程序與非全域區域中執行的程序競爭 CPU。如果您沒有指定數值給 globalzoneshares 和 defaultpsetmin 特性,這些特性會使用其預設值。
# clnode set [-p globalzoneshares=integer] \ [-p defaultpsetmin=integer] \ node |
設定預設處理器組中可用的最少 CPU 共用數量。預設值為 1。
設定指定給全域區域的共用數量。預設值為 1。
指定要設定特性的節點。
在設定這些特性時,您就是在為全域區域設定特性。如果您沒有設定這些特性,您則無法從非全域區域中的 RG_SLM_PSET_TYPE 特性獲益。
驗證您是否已正確地設定這些特性。
# clnode show node |
對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。
配置 CPU 控制功能。
# clresourcegroup create -p RG_SLM_TYPE=automated \ [-p RG_SLM_CPU_SHARES=value] resource_group_name |
讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。
指定要被指定給資源群組特定專案的 CPU 共用數量 project.cpu-shares,並決定要指定給全域區域的 CPU 共用數量 zone.cpu-shares。
指定資源群組的名稱。
在此程序中,您沒有設定 RG_SLM_PSET_TYPE 特性。在全域區域中,此特性會使用 default 值。
此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有資源群組。
啟動配置變更。
# clresourcegroup online -M resource_group_name |
指定資源群組的名稱。
請勿移除或修改 SCSLM_resourcegroup_name 專案。您可以手動新增更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。
如果您要為非全域區域中的資源群組指定 CPU 共用,但不須建立專屬處理器組,請執行此程序。
如果已為資源群組指定 CPU 共用,Sun Cluster 軟體會在啟動非全域區域中資源群組的資源時執行以下作業:
建立名為 SCSLM_resourcegroup_name 的池 (若尚未這樣做)。
使SCSLM_pool_zone_name 池與預設處理器組關聯。
將非全域區域動態連結至 SCSLM_poolzone_name池。
以特定數量的 CPU 共用擴增指定給非全域區域 (zone.cpu-shares) 的 CPU 共用 (若尚未這樣做)。
如果還沒建立專案,請在非全域區域中建立名為 SCSLM_resourcegroup_name 的專案。此專案為資源群組專用,且已為其指定特定數量的 CPU 共用 (project.cpu-shares)。
啟動SCSLM_resourcegroup_name 專案中的資源。
如需更多有關配置 CPU 控制功能的資訊,請參閱 rg_properties(5) 線上手冊。
為系統將預設排程程式設定為公平共用排程程式 (FSS)。
# dispadmin -d FSS |
FSS 在下次重新啟動時會變成預設的排程程式。若要讓此配置立即生效,請使用 priocntl 指令:
# priocntl -s -C FSS |
使用 priocntl 和 dispadmin 指令組合可確保 FSS 立即變成預設排程,且重新啟動後仍是如此。如需更多有關設定排程類別的資訊,請參閱 dispadmin(1M) 與 priocntl(1) 線上手冊。
如果 FSS 不是預設的排程程式,您的 CPU 共用指定將不會生效。
在每個要使用 CPU 控制的節點上,配置全域區域的共用數量和預設處理器組中可用的最少 CPU 數量
設定這些參數有助於避免全域區域中執行的程序與非全域區域中執行的程序競爭 CPU。如果您沒有指定數值給 globalzoneshares 和 defaultpsetmin 特性,這些特性會使用其預設值。
# clnode set [-p globalzoneshares=integer] \ [-p defaultpsetmin=integer] \ node |
設定指定給全域區域的共用數量。預設值為 1。
設定預設處理器組中可用的最少 CPU 數量。預設值為 1。
識別要設定特性的節點。
在設定這些特性時,您就是在為全域區域設定特性。
驗證您是否已正確地設定這些特性:
# clnode show node |
對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。
配置 CPU 控制功能。
# clresourcegroup create -p RG_SLM_TYPE=automated \ [-p RG_SLM_CPU_SHARES=value] resource_group_name |
讓您能夠控制 CPU 用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。
指定要被指定給資源群組特定專案的 CPU 共用數量 (project.cpu-shares),並決定要指定給非全域區域的 CPU 共用數量 (zone.cpu_shares)。
指定資源群組的名稱。
此步驟會建立資源群組。您也可以使用 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 設定為手動)。
在此程序中,您沒有設定 RG_SLM_PSET_TYPE 特性。Sun Cluster 使用預設的處理器組。
啟動配置變更。
# clresourcegroup online -M 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_resourcegroup_name 專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。
如果已將資源群組配置在專屬處理器組中執行,Sun Cluster 軟體會在啟動非全域區域中資源群組的資源時執行以下作業:
建立名為 SCSLM_pool_zone_name 的池 (若尚未這樣做)。
建立專屬處理器組。處理器組的大小是透過使用 RG_SLM_CPU_SHARES 和 RG_SLM_PSET_MIN 特性決定。
使 SCSLM_pool_zone_name 池與已建立的處理器組關聯。
將非全域區域動態連結至 SCSLM_pool_zone_name 池。
擴增指定給具有特定 CPU 共用數量的非全域區域的 CPU 共用數量 (若尚未這樣做)。
如果還沒建立專案,請在非全域區域中建立名為 SCSLM_resourcegroup_name 的專案。此專案為資源群組專用,且已指定特定數量的 CPU 共用 (project.cpu-shares)。
啟動 SCSLM_resourcegroup_name 專案中的資源。
為系統將排程程式設定為公平共用排程程式 (FSS)。
# dispadmin -d FSS |
FSS 在下次重新啟動時會變成預設的排程程式。若要讓此配置立即生效,請使用 priocntl 指令。
# priocntl -s -C FSS |
使用 priocntl 和 dispadmin 指令組合可確保 FSS 立即變成預設排程,且重新啟動後仍是如此。如需更多有關設定排程類別的資訊,請參閱 dispadmin(1M) 與 priocntl(1) 線上手冊。
如果 FSS 不是預設的排程程式,您的 CPU 共用指定將不會生效。
在每個要使用 CPU 控制的節點上,配置全域區域的共用數量和預設處理器組中可用的最少 CPU 數量
設定這些參數有助於避免全域區域中執行的程序與非全域區域中執行的程序競爭 CPU。如果您沒有指定數值給 globalzoneshares 和 defaultpsetmin 特性,這些特性會使用其預設值。
# clnode set [-p globalzoneshares=integer] \ [-p defaultpsetmin=integer] \ node |
設定預設處理器組中可用的最少 CPU 數量。預設值為 1。
設定指定給全域區域的共用數量。預設值為 1。
識別要設定特性的節點。
在設定這些特性時,您就是在為全域區域設定特性。
驗證您是否已正確地設定這些特性:
# clnode show node |
對於您指定的節點,clnode 指令會列印 特性設定及為這些特性設定的數值。如果您沒有用 clnode 設定 CPU 控制特性,則會使用預設值。
配置 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 |
讓您能夠控制 CPU 控制用法並使某些步驟自動化來為系統資源管理配置 Solaris 作業系統。
指定要指定給資源群組特定專案的 CPU 共用數量 (project.cpu-shares),並決定要指定給非全域區域的 CPU 共用數量 (zone.cpu-shares),以及處理器組中的最大處理器數量。
啟用建立專屬處理器組。若要有專屬處理器組,您可以將此特性設定為 strong 或 weak。數值 strong 和 weak 是互斥的。也就是說,您不能在同一個區域中配置資源群組,使得有些是 strong,有些是 weak。
判定處理器組中的最少處理器數量。
指定資源群組的名稱。
此步驟會建立資源群組。您也可以使用 clresourcegroup set 指令修改現有資源群組。
如果預設池以外的池處於區域配置中,或區域已動態連結至預設池以外的池,您便無法在非全域區域中將 RG_SLM_TYPE 設為 automated。如需有關區域配置和池連結的資訊,請參閱 zonecfg(1M) 與poolbind(1M) 線上手冊。檢視您以下的區域配置:
# zonecfg -z zone_name info pool |
像是 HAStoragePlus 的資源,或是配置為在非全域區域中啟動但 GLOBAL_ZONE 特性設為 TRUE 的LogicalHostname資源會在全域區域中啟動。即使您將 RG_SLM_TYPE 特性設為 automated,此資源不會從 CPU 共用和專屬處理器組配置中獲益, 且會被視為在資源群組中一般 (RG_SLM_TYPE 設定為手動)。
啟動配置變更。
指定資源群組的名稱。
請勿移除或修改 SCSLM_resourcegroup_name 專案。您可以手動增加更多資源控制給專案,例如透過配置 project.max-lwps 特性。如需更多資訊,請參閱 projmod(1M) 線上手冊。
在資源群組處於線上狀態時,會動態考慮對 RG_SLM_CPU_SHARES 和 RG_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 的數值。