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

技術性說明

每一個 lnode 有四種與 Solaris Resource Manager 排程器有關的屬性﹕cpu.shares、cpu.myshares、cpu.usage 以及 cpu.accrue。liminfo(1SRM) 的輸出可以顯示這些屬性以及其他有用的數值。

Solaris Resource Manager 排程係藉由 SHR 排程類別來實施。這包括對 dispadmin(1M)、priocntl(1)、nice(1) 及 renice(1) 指令的支援。在系統呼叫的層級,SHR 可以與 TS 排程類別相容。

配分

一位使用者的 cpu.shares 屬性可用來依照使用者的雙親和作用中的同層比例分配 CPU 權利。唯有使用者擁有作用中的子使用者時,使用者的 cpu.myshares 屬性才有意義;它可用來決定其各自的 CPU 權利比例。

舉例來說,如果使用者 A 和 B 是雙親 P 唯一的子,而 A、B 和 P 在群組 P 中各有一個配分(亦即 A 和 B 的 cpu.shares 設定為 1,而 P 的 cpu.myshares 也設定為 1),那麼他們各有群組總權利的三分之一的 CPU 權利。

因此一位使用者實際的 CPU 權利取決於雙親的相對權利。亦即有賴於雙親的 cpu.shares 對於其同層的相對值,以及對於祖輩的 cpu.myshares 相對值,一直上溯整個排程樹。

為了系統管理之便,附加至 root lnode 的處理不受配分屬性的限制。任何附加至 root lnode 的處理總是會取得它所需的所有 CPU 資源。

重要的是不可將 CPU 用量大的處理附加至 root lnode 之上,因為這樣做會嚴重影響到其他處理的執行。要避免此問題,請仔細考慮下列各點﹕

不是所有排程樹中的群組 header 都需要代表實際執行處理的使用者;而且在這種時候也不需要為它們配置一個 CPU 配分。可以將此類 lnode 的cpu.myshares 屬性設定為零來指定它們。此種群組 header 中的 CPU 累計屬性,依然包括其群組所有成員使用量的應付款項。

配置的配分

cpu.shares 和 cpu.myshares 屬性決定每個作用中 lnode 目前配置的 CPU 配分,依百分比為準。未作用使用者的配分不會影響配置的配分。如果只有一位作用中的使用者,那麼該使用者會取得百分之百的可用 CPU 資源。如果只有兩位作用中的使用者,在相同的群組中有相等的配分,那麼每一個使用者將配置到百分之 50 的配分。請參閱"計算配置的配分"以取得更多有關如何計算配置配分的資訊。

使用量及消減

每當一個附加至 lnode 的處理應付一個 CPU 循環的款項,cpu.usage 屬性便會增加。使用量屬性值會依照由使用量消減全域 Solaris Resource Manager 參數所決定的指數率來消減。使用量消減率(以秒為單位的半減期代表)由 srmadm(1MSRM) 指令來設定。

雖然所有處理都有一個 lnode,無論其目前的排程類別為何,在 SHR 排程類別之外的 lnode 始終不會被要求支付款項。

累計的使用量

累計的使用量屬性會隨著使用量屬性的增加而增加同等的量,但卻不會消減。因此它代表屬性上一次重設之後,附加至 lnode 及其成員所有處理累積使用量的總計。

有效的配分

一個 lnode 配置的配分及其 cpu.usage 屬性可以決定其目前有效的配分。Solaris Resource Manager 排程器會調整附加至一個 lnode 的所有處理優先順序,以使其工作速率與 lnode 的有效配分成比例,而與其上附加的可執行處理計數成反比。

每個-處理配分優先順序 (sharepri)

作業系統 kernel 會為每個附加至 lnode 的處理都保持一份內部 Solaris Resource Manager 的資料。其中作為排程目的最重要的數值為 sharepri 值。擁有最低 sharepri 值的處理總是最有資格,會被優先排程在一個 CPU 之上執行。