Solaris Resource Manager 1.3 系統管理指南

CPU 資源管理

可更新 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 資源。

這些概念可由下列方程式來說明:

等式顯示新的 Solaris Resource Manager 優先相等於目前的優先加上 CPU 使用量除以配份數量。

new_SRM_priority 便會被對映至系統優先順序。Solaris Resource Manager 的優先順序越高,系統的優先順序就越低。反之亦然。每一個衰減期中, CPU_usage 都被減少一半,以最近的使用量遞減。

每位使用者也有一組旗標,是布林式的變數,可用來啟用或停用特定的系統權限,如登入。可以為每位使用者設定個別的旗標,或從一個雙親 lnode 繼承。

任何使用者都可以讀取使用者的使用量、限制和旗標,但只有具有適當管理權限的使用者才能變更它們。

減少 CPU 浪費

Solaris Resource Manager 從不浪費 CPU 的可用資源。不論使用者的配置多低,該用者總是會取得所有可用的 CPU,如果沒有其他競爭使用者的話。這樣的結果就是使用者可能會注意到執行效能沒有通常那麼平順。如果一位有效配分非常低的使用者在沒有競爭時執行互動式處理,工作會感覺得非常快。然而,只要另一位有較高有效配分的使用者要求 CPU 的時間,他就會優先取得資源,因此第一位使用者會注意到工作明顯變慢。不過 Solaris Resource Manager 會特別注意以確保合法的使用者都不會被剝奪資源而無法進行任何工作。Solaris Resource Manager 所排程的所有處理(除了有最大 nice 值的以外)都由排程器定期配置 CPU 資源。也有邏輯可以防止一位才登入的新使用者被賦予推演式的 '公平' 但超大量的 CPU 資源而傷害到現存的使用者。