適用於 Solaris 2.6 的 Solaris Resource Manager 1.0 系統管理指南(SPARC 平台版)

CPU 資源管理

可更新 CPU 服務的配置是利用一個公平分享排程器來加以控制。每一個 lnode 會被指派一個特定數量的 CPU 配分,就等於是公司的股份一樣。與每個 lnode 有關的處理所配置的 CPU 資源與可用的作用中配分總數成比例,其中的"作用中"表示 lnode 附加了執行中的處理。只有作用中的 lnode 會被視為資源配置,因為只有它們在執行作用中的處理,而且需要 CPU 時間。當一個處理佔用 CPU 循環時,其 lnode 的 CPU 使用量屬性會隨之增加。排程器會定期調整所有處理的優先順序,迫使 CPU 使用量的相對比率集中到所有作用中 lnode 在其個別層級的 CPU 配分相對比率。這樣一來,使用者可以至少在一段時間之後開始享有其 CPU 服務的權利,無論其他使用者的行為如何。排程器是階層式的,因為它也能確保群組收到其群組權利,無論成員的行為。Solaris Resource Manager 是一種長期性的排程器;它能確保所有的使用者及應用程式能在"排程器期限"的過程中接收到公平的配分。這表示當一位用量低的使用者開始要求 CPU 時,該使用者會比用量高的使用者收到較多的資源,直到其相對的使用量與其相對的"公平"配分配置差不多為止。您現在從權利中使用的愈多,以後收到的就愈少。此外,Solaris Resource Manager 有一個由系統管理員設定的消減期,會忘記過去的使用量。此消減模式是半減期消減之一,其中百分之 50 的資源在一個半減期之內被消減掉。這樣可以確保使用量穩定的使用者不至於被短期內要求高處理資源的使用者干擾。半減期消減期設定排程器的反應或"期限";內定值為 120 秒。愈短的時間值愈能造成整個系統的均衡反應,但其計算與維護整個系統的資源配置較不準確。無論管理設定值為何,排程器都會試圖防止困境(資源匱乏),並且確保即使在最極端的情況下也能達成合理的行為。

Solaris Resource Manager 排程器比標準 Solaris 排程器好的最主要原因就是它可以排程使用者或應用程式,而不是個別的處理。每個與 lnode 有關的處理都受到一組限制的約束。簡單如一個使用者執行一個單一作用中的處理,等於是讓每個處理受控於對應的 lnode 中所列的限制。若有一個以上的處理附加在 lnode 之上,就如一個群組中的每個成員都執行多個處理的話,所有的處理都會一起受到列出限制的約束。這表示使用者或應用程式無法佔用比他們所被允許的權利還要多的 CPU,無論他們執行多少併行的處理。將一定數量的配分指派為權利的方法既簡單又易懂,而且也可以預測變更使用者配分的效果如何。

Solaris Resource Manager 絕對不會浪費 CPU 的資源。不論使用者的配置多低,只要沒有其他使用者,該使用者會取得所有可用的 CPU 資源。其中一點是使用者可能會注意到執行效能比平常要來得差一點。如果一位只有低有效配分的使用者正在執行一個互動式的處理,但同時沒有他人在使用資源,執行的速度會比較快。然而,一旦另一位有較高有效配分的使用者要求 CPU 時間時,則該使用者會被優先考慮,因此第一位使用者就會覺得工作的進行有明顯減慢的情形出現。不過 Solaris Resource Manager 會盡力確保合法使用者不至於資源匱乏而無法進行任何工作。由 Solaris Resource Manager 排程的所有的處理(除了擁有最大 nice 值的之外)會定期由排程器取得配置的 CPU 資源。此外另有邏輯可以防止一位才登入的新使用者獲得理論上"公平"但超大比例的 CPU 而危害現存的使用者。