Solaris Resource Manager 軟體提供下列系統資源的控制功能:CPU(處理機速率)使用量、虛擬記憶體、實體記憶體(僅限於Solaris 8)、處理數量、使用者及/或排程群組同時登入的此數,以及終端機連線時間。
表 2-1 Solaris Resource Manager 功能
系統 資源 |
配置 政策 |
控制 |
衡量 |
使用量資料 |
---|---|---|---|---|
CPU 使用量 |
是的 (每位使用者識別碼) |
是的 |
是的 (每位使用者識別碼) |
是的 |
虛擬記憶體 |
是的 (每位使用者、每個處理) |
是的 (每位使用者、每個處理) |
是的 (每位使用者、每個處理) |
是的 |
實體記憶體(僅限於Solaris 8) |
是的 |
是的 |
是的 |
是的 |
處理數量 |
是的 |
是的 |
是的 |
是的 |
使用者/排程群組登入 |
是的 |
是的 |
是的 |
是的 |
連線時間 |
是的 |
是的 |
是的 |
是的 |
|
|
|
|
|
Solaris Resource Manager 可以追蹤每位使用者每種資源的使用量。除了 CPU 以外,可以對使用者指派所有資源的使用量硬限制。如果使用者讓使用量達到限制的話,硬限制可以使資源消耗的嘗試失敗。硬限制可以直接施行,藉由 kernel 或是負責管理個別資源的軟體。
限制值為零表示沒有設定任何限制。root lnode 的所有限制屬性都應為零。
一般而言,所有系統資源都可分為以下兩種類別之一:fixed(或不可更新)資源 與 可更新資源。然而,在 Solaris Resource Manager 1.3 用於 Solaris 8 環境,將會使用第三級別:軟性限制。常駐設定大小 (RSS) 軟性限制的方式是由資源運算強制常駐來間接執行,也就是說用量可暫時超出限制。如需其他資訊,請參閱 第 8章, 使用資源運算常駐程式的實體記憶體管理 。
Solaris Resource Manager 以不同方式管理固定與可更新資源。
固定或不可更新的資源指的是數量有限的資源。例如虛擬記憶體、處理數目、使用者及/或排程群組的同時登入以及連線時間等。固定資源可以消耗(配置)並且釋放(取消配置),但在所有者取消配置之前,沒有其他實體可以使用此資源。Solaris Resource Manager 採用一種使用量與限制模式來控制固定資源的使用量。使用量定義為目前被使用的資源,而限制則是 Solaris Resource Manager 所允許的最大程度使用量。
可更新資源是可以不斷供應的資源,例如 CPU 時間。可更新資源只能被消耗,而且一旦消耗之後便不會再回來。可更新資源會在任何時候有限供應,如果當時不用,它也不會再回來。(可以比喻為陽光。任何時刻都只有一部份陽光照射到地球上,未來幾百萬年還會持續下去。)因此可更新資源是可以重新指派給其他使用者而不需要明確重新配置來確保不浪費。
Solaris Resource Manager 採用一種使用量、限制和衰減率來控制一位使用者的可更新資源消耗率。使用量定義為所用的總資源,設定與群組中其他使用者比較的使用量率限制。 衰減率指的是歷史使用量被去除的期間。例如下一個資源量,時鐘轉動,會被配置給使用中的 lnode,與其最低的衰減總使用量值相對於其配置的配分。衰減使用量值是一段時間的總使用量的衡量減掉半壽命衰減模式所決定的歷史使用量某部份而得出。
可更新 CPU 資源的配置是利用一種稱為 Solaris Resource Manager SHR 排程器的公平分享排程器來控制。
每個 lnode 被指派幾個 CPU 配分。與每個 lnode 有關的處理被依照明顯使用中配分(使用中表示 lnode 有附加執行中的處理)的總數來配置 CPU 資源。只有使用中的 lnode 才能配置資源,因為只有它們會執行使用中的處理並且需要 CPU 時間。
當一個處理在消耗 CPU 時間時,其 lnode 的 CPU 使用量屬性就會增加。排程器會定期調整所有處理的優先順序,以迫使所有使用中的 lnode 就其個別程度的 CPU 使用量的相對率與 CPU 配分的相對率會集。這樣一來,使用者可以預期以後繼續收到至少其應得的 CPU 服務,無論其他使用者的行為如何。
排程器是屬於階層式的,因為它也能確保群組收到其應有的權利,不論其成員的行為如何。Solaris Resource Manager SHR 排程器是一種長期的排程器,確保所有的使用者和應用程式都能在排程器時段間收到公平的配分。這表示當輕量使用者開始要求 CPU 資源時,該使用者會收到比重量使用者較多的資源,直到其相對的使用量與其相對的 '公平' 配分配置相符為止。您現在收到越多應有的配分,以後就會收到較少的配分。
此外,Solaris Resource Manager 有一個衰減期,由系統管理員設定,不會追蹤過去的使用量。衰減模式是屬於半壽命式的,其中百分之 50 的資源會在一半壽命時被減去。這可以確保用量穩定平均的使用者不會受到短期大量使用者的傷害。半壽命衰減期會設定排程器的回應或時期。預設值為 120 秒。一個長半壽命喜愛平均用量,典型長期批次工作,同時,一個短半壽命喜愛互動式使用者。較短的數值容易在系統上供應平均的回應,不過在計算與維持系統資源配置時比較不精確。無論管理設定值為何,排程器都會試著防止資源匱乏並且確保合理的行為,甚至在極端的情況之下。
Solaris Resource Manager SHR 排程器和標準 Solaris 排程器比較的主要優點在於它可以排程使用者或應用程式,而非個別的處理。與 lnode 有關的每一個處理都會受到一組限制的控制。在只有一位使用者執行單一使用中處理的簡單例子中,這就和讓每個處理受到對應的 lnode 中所列的限制是一樣的。當有一個以上的處理附加到 lnode 上,當群組中的成員各自執行多個處理時,所有的處理都會受到列出的限制所控制。這表示使用者或應用程式無法比其應有的資源消耗更多的 CPU,不論它們在執行多少同時的處理。這個指派應有配分的方法非常簡單易懂,而且變更使用者配分的效果也顯而易見。
SHR 排程器的另一項優點是它會在管理個別執行緒的排程時(以 Solaris 的技術而言,排程的實體是一種輕量的處理 (LWP)),也在使用者之間分配 CPU 資源。
這些概念可由下列方程式來說明:
new_SRM_priority 便會被對映至系統優先順序。Solaris Resource Manager 的優先順序越高,系統的優先順序就越低。反之亦然。每一個衰減期中, CPU_usage 都被減少一半,以最近的使用量遞減。
每位使用者也有一組旗標,是布林式的變數,可用來啟用或停用特定的系統權限,如登入。可以為每位使用者設定個別的旗標,或從一個雙親 lnode 繼承。
任何使用者都可以讀取使用者的使用量、限制和旗標,但只有具有適當管理權限的使用者才能變更它們。
Solaris Resource Manager 從不浪費 CPU 的可用資源。不論使用者的配置多低,該用者總是會取得所有可用的 CPU,如果沒有其他競爭使用者的話。這樣的結果就是使用者可能會注意到執行效能沒有通常那麼平順。如果一位有效配分非常低的使用者在沒有競爭時執行互動式處理,工作會感覺得非常快。然而,只要另一位有較高有效配分的使用者要求 CPU 的時間,他就會優先取得資源,因此第一位使用者會注意到工作明顯變慢。不過 Solaris Resource Manager 會特別注意以確保合法的使用者都不會被剝奪資源而無法進行任何工作。Solaris Resource Manager 所排程的所有處理(除了有最大 nice 值的以外)都由排程器定期配置 CPU 資源。也有邏輯可以防止一位才登入的新使用者被賦予推演式的 '公平' 但超大量的 CPU 資源而傷害到現存的使用者。
虛擬記憶體是利用一個固定資源模式來管理的。虛擬記憶體限制也適用於附加至此 lnode 所有處理的記憶體大小總數。此外,這種每個-處理虛擬記憶體的限制,會限制處理的虛擬位址空間大小總數、包括所有代碼、資料、堆疊、檔案映射以及共用程式庫。這兩種限制都是階層式的。限制虛擬記憶體的使用可以有效地防止虛擬記憶體匱乏。例如 Solaris Resource Manager 會阻止一個外洩記憶體的應用程式佔用未保證的虛擬記憶體量而危害所有使用者。相反的,此類處理只會犧牲自己,或在最壞的情況下,犧牲其資源群組內部的其他成員。
如果您在 Solaris 8 作業環境中使用 Solaris Resource Manager 1.3,您可以透過收集附加到 lnode 或專案中的處理,來控制實體記憶體的資源用量。如需關於此功能的資訊,請參閱 第 8章, 使用資源運算常駐程式的實體記憶體管理 。
使用者可以同時執行的控制的計數是使用一個階層式限制的固定資源模式來控制。
系統管理員和群組標頭可以設定終端機登入權限、登入數目和連線時間限制,由 Solaris Resource Manager 依照階層實施。當一位使用者接近連線的時間限制時,會有警告訊息送至使用者的終端機。達到限制時,使用者會被通知,然後在短暫的寬限期之後被迫登出。
Solaris Resource Manager 會增強式地衰減過去的連線時間使用量,只保持最近的使用量可用。系統管理員會設定一個半壽命參數以控制衰減率。長的半壽命較適於平均的使用,而短的半壽命則適於互動式使用者。