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

技術性說明

每一個 lnode 有四種與 Solaris Resource Manager 排程器有關的屬性﹕cpu.sharescpu.mysharescpu.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.sharescpu.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 之上執行。