每一個 lnode 有四種與 Solaris Resource Manager CPU 排程器有關的屬性:cpu.shares、cpu.myshares、cpu.usage,以及 cpu.accrue。liminfo(1SRM) 的輸出可以顯示這些屬性以及其他有用的數值。
Solaris Resource Manager 排程係藉由 SHR 排程類別來實施。這包括對 nice(1)、priocntl(1)、renice(1),以及 dispadmin(1M) 指令的支援。在系統呼叫的層級,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 之上,因為這樣做會嚴重影響到其他處理的執行。要避免此問題,請仔細考慮下列各點:
中央管理員帳號應該有自己的 UID,和超級使用者帳號的 UID 不同。登入以執行非管理性的活動時必須使用此帳號。如果需要一個超級使用者的 UID 來執行管理功能的話,中央管理員可以使用 su(1) 指令來變更 UID,同時仍然附加在其自身的 lnode 之上。
srmuser(1SRM) 指令可在 init.d(4) 指令集中用以將任何常駐處理附加到非root lnode。根據預設,開機指令集所啟始的任何處理都有一個有效的 root UID,而且會附加至 root lnode 之上。使用者指令容許常駐程式保留一個有效的 root UID,同時附加至其自身的lnode。這樣若於任何常駐程式變為需要佔用大量 CPU 時,可以避免發生問題。
不是所有排程樹中的群組標頭都需要代表實際執行處理的使用者;而且在這種時候也不需要為它們配置一個 CPU 配分。可以將此類 lnode 的 cpu.myshares 屬性設定為零來指定它們。此種群組標頭中的 cpu.accrue 屬性,依然包括其群組所有成員使用量的應付款項。
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 的有效配分成比例,而與其上附加的可執行處理計數成反比。
作業系統 kernel 會為每個附加至 lnode 的處理都保持一份內部 Solaris Resource Manager 的資料。其中作為排程目的最重要的數值為 sharepri 值。擁有最低 sharepri 值的處理總是最有資格,會被優先排程在一個 CPU 之上執行。