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

Kernel 開機參數

Kernel 有某些 Solaris Resource Manager 參數,可由中央管理員在 kernel 開機時加以設定。Solaris 會在開機時讀取 /etc/system 檔,並且使用它來設置 kernel 模組(請參閱 系統(4) 中的詳細說明)。可以在 SHR 模組(全部都是 32- 位元整數)中設定以取代 Solaris Resource Manager 內定行為的參數如下﹕

SRMLnodes

要在 kernel 中快取的 lnode 數。在 Solaris 系統中,每個 kernel lnode 需要大約 3Kb。一個零的值(內定)表示 kernel 會自行決定其數值。所用試探法如下﹕

(nproc / SRMProcsPerUid ) + SRMLnodesExtra 

其中 nproc 是能在系統中同時進行的最大處理數。最小值 6 可以取代這個計算。而由 SRMMemoryMax 所指定的最大值也可以取代這個計算。

SRMProcsPerUid

每位使用者所使用的預定平均處理數。內定為 4。

SRMLnodesExtra

試探法中所用的偏差值以決定記憶體內 lnode 陣列的大小。內定為 20。

SRMNhash

用來將 UID 數值對映至 kernel 中 lnode 的散列表登錄數目。在 Solaris 之上,每個登錄都是 4 個位元組長。內定為零,表示要使用與 lnode 數相同的數值。

SRMMemoryMax

此數值的倒數是一個分數,可以指定 Solaris Resource Manager lnode 以及散列表一起使用的最大真正記憶體百分比。內定為 20,表示最多百分之 5 的真正記憶體會用於 Solaris Resource Manager 的資料結構。

SRMMemWarnFreq

警告單一 lnode"記憶體超過"通知的最小時間間隔,以秒為單位。內定值為 4。

舉例來說,在 /etc/system 檔案中,此行

set srmlim:SRMMemWarnFreq=10 

會確保不超過每 10 秒鐘將超出記憶體的訊息遞送給任何一位使用者。

也有某些不在 Solaris Resource Manager 中的參數,會影響 Solaris Resource Manager 的行為。其中包括﹕

initclass

init(1M) 處理所啟動的排程類別名稱。在 Solaris Resource Manager 之下,應提供字串"SHR"(包括雙引號字元)。內定 Solaris 值為"TS"。要使用 Solaris Resource Manager 來控制 CPU 資源,下一行字應包括在 /etc/system 檔中﹕

set initclass="SHR"

以取代內定值。

extraclass

這是一個可載入的排程類別模組名稱,不一定要用它來作為內定的排程類別。要僅以非 CPU 資源控制來使用 Solaris 資源管理,下一行字應包括在 /etc/system 檔中﹕

set extraclass="SHR"

要不載入 Solaris Resource Manager 而讓系統開機,請改用一個名為 /etc/system.noshrload 的代用 /etc/system。請參閱"不以 Solaris Resource Manager 開機"中有關此處理的指示說明。

多重使用者啟動設置

在一般的系統開機時,當系統由單一使用者模式變更為多重使用者,會執行一個 Solaris Resource Manager 初始指令集以設定各種 Solaris Resource Manager 參數。第 4章, 開機程序 中有此種指令集功能的詳細說明。

如果初始指令集本身 (/etc/init.d/init.srm)被修改,應將原始和修改過的版本分別存放。應用 Solaris Resource Manager 更新不能確保可以保存現有的初始指令集。

透過 srmadm 的全域 Solaris Resource Manager 參數

srmadm(1MSRM) 指令可讓一位管理員設定、修正或顯示全域 Solaris Resource Manager 參數。請參閱線上援助頁有關所有參數的詳細說明。

用來設定各種參數的srmadm(1MSRM) 指令呼叫次數沒有限制,也沒有必要將它們全部包括在單一引動中。這也表示srmadm(1MSRM) 可被用來瞬間變更一個執行中 Solaris Resource Manager 系統的操作參數,只不過在進行變更時要特別小心。

管理員要特別注意的是可以啟動或關閉 Solaris Resource Manager 主要功能的 srmadm(1MSRM) 選項。這些選項是﹕

fileopen[={y|n}]

內定的資料庫為 /var/srm/srmDB,而它可以利用 -f 選項加以取代。請注意在操作中關閉 Solaris Resource Manager 資料庫檔應被視為一種緊急動作。它可能會產生幾種不良的後果﹕所有處理會繼續在可能享有比較多特權的代理 root lnode 之上執行;CPU 排程器被關閉;Solaris Resource Manager 停止實施限制。啟動時,Solaris Resource Manager 目前沒有開啟任何限制資料庫,而且其快取記憶體只包含附加了全部處理的代理 root lnode。

share[={y|n}]

啟動此選項時,會使用 Solaris Resource Manager CPU 排程器,而且根據 Solaris Resource Manager 的動態使用及)演算法來排程 CPU 的資源。除非啟動 fileopen 模式,否則無法設定此模式。關閉時,Solaris Resource Manager CPU排程器的使用計算會被凍結,而處理)固定的相等優先順序輪流排程。

limits[={y|n}]

啟動此選項時,Solaris Resource Manager 會強制採行虛擬記憶體及處理的限制。除非啟動 fileopen 模式,否則無法設定此模式。關閉時,Solaris Resource Manager 會一直更新使用屬性,但不會強制實施限制。

adjgroups[={y|n}]

啟動此選項時,會採用 Solaris Resource Manager CPU 排程器的全域群組有效配分調整。建議您在大多數時間選擇啟動的狀態。在每個執行間隔,所有限制登錄的一般化使用都會重新計算。如果啟動了 adjgroups 排程模式,那麼執行一般化使用的額外處理方式如下。排程器將排程樹掃描一遍,比較每個群組最近接收的有效配分是否符合其權利。接收到比其群組權利還要少的群組在下一個執行間隔會優先接收較大的有效配分。這樣便可確保群組儘可能接收到其 CPU 服務的權利,無論其成員的行動為何。

limshare[={y|n}]

啟動此選項時,Solaris Resource Manager CPU 排程器應用其優先順序上限功能來限制所有使用者的有效配分,以防止使用量超低的使用者暫時取得幾乎百分之百的 CPU。因此建議您使用啟動的狀態。

一位使用者的 CPU 服務比例大約與使用者的使用量成比例。如果使用者經過很長一段時間沒有活動,那麼他們的使用會消減為接近零。那麼當這類使用者登入時(或是 lnode 以任何方式開始作用),在下一次執行間隔的期間,使用者的處理優先順序可能會提高到幾乎獨佔 CPU。

啟動 limshare 排程旗標會促使排程器評估 lnode 在下一個執行間隔之前接收的有效配分。如果結果超過使用者被指派的權利數倍(請參閱 maxushare),那麼使用者的一般化使用會被重新調整以防止這個問題。

srmadm(1MSRM) 有兩種選擇性的參數,對管理員而言也很有用。它們是﹕

下列為典型的 srmadm(1MSRM) 指令實例。

要開啟 Solaris Resource Manager,請啟動 CPU 排程器以及資源限制﹕

# srmadm set -f /var/srm/srmDB fileopen=y:share=y:limits=y 

要將 CPU 使用量消減率設定為 5 分鐘的半減期﹕

# srmadm set usagedecay=300s 

要顯示目前的旗標設定值及應付款項﹕

% srmadm 

要顯示所有內定的設定值﹕

% srmadm show -dv 

關閉 Solaris Resource Manager

srmadm(1MSRM) 指令可以清除 fileopen 旗標來關閉 Solaris Resource Manager;所有處理會被移至代理 root lnode 之上,快取記憶體中其他變更的 lnode 會被清洗至磁碟中,而 lnode 檔會關閉。這會自動迫使配分及限制旗標關閉,分別使 Solaris Resource Manager CPU 排程器以及限制的實施失效。如果在保持 lnode 檔開啟時做出要求,配分及限制旗標可以個別關閉。這種關閉檔案的方法比較理想,因為可以確保處理附加在其正確的 lnode 上。

請注意如果在操作中只關閉 Solaris Resource Manager 排程器,只能暫停使用量及消減演算法。排程器仍舊繼續在 SHR 排程類別中進行各項處理,但是因為每個處理已被賦予更新過的優先順序,因此使用相同的數值會造成簡單的"輪流"排程。

開啟檔案以重新啟用 Solaris Resource Manager,並且在檔案關閉之後設定配分及/或限制旗標,無法使現有的處理由 root lnode 上移開。因此不建議您在一般操作當中關閉 Solaris Resource Manager 資料庫。如果您已這麼做,系統應該重新開機以確保處理被附加至正確的 lnode 之上。