UNIX 的開機程序中,會在不同的階段啟用 Solaris Resource Manager 軟體的各種功能。主要步驟如下所示:
首次啟始 kernel 時,會由 /etc/system 檔中載入各種參數。其中某些會影響到 Solaris Resource Manager 。下一節 不以 Solaris Resource Manager 開機會就這方面詳加說明。
當 kernel 繼續其啟始程序時,Solaris Resource Manager 會在建立了處理 0 ,但在處理 1 開始之前被啟始。方法是啟動 Solaris Resource Manager CPU 預設的排程類別 (SHR) 中的 init,而非預設的排程類別。SHR 模組會載入,而處理 1 (即 init 處理) 由 Solaris Resource Manager 軟體負責排程。(請參見 init(1M).)
最初 init 處理及其所有子處理會附加至代理 root lnode 之上。
當 kernel 完全啟始之後,系統會從單一使用者轉變為某種多重使用者模式之一(通常是執行層級 2 或 3)。程序稍早會執行 /etc/init.d/init.srm 程序檔。這個指令集所執行的動作於開機順序事件 中有說明,並且啟用一般性的 Solaris Resource Manager 操作。
如果您必須在不使用 Solaris Resource Manager 的情況下開機,就必須變更 /etc/system 檔案中的 initclass 變數以參考分時 (TS) 而非 SHR。最簡單的方法就是使用 boot 指令的-a (詢問) 選項,提示您輸入一個系統檔案。然後再按下 RETURN 鍵以接受其他提示的預設值,直到您被提示要輸入系統檔的名稱。在系統出現提示時請輸入系統檔案名稱,鍵入 etc/system.noshrload (沒有前導斜線)作為回應。以下是程序範例:
Note that /etc/system.noshrload is a backup copy of /etc/system made at the time Solaris Resource Manager was installed.If there have been subsequent edits to /etc/system, then /etc/system.noshrload should be maintained in parallel so that it differs only by the occurrence of the Solaris Resource Manager modification:
# diff /etc/system /etc/system.noshrload < # enable srm < set initclass='SHR' |
系統開機之後切換為多重使用者模式時事件發生的順序,在 Solaris Resource Manager 中特別重要。下列步驟說明正確建立 Solaris Resource Manager 系統的順序:
使用 srmadm 指令來設置與啟動 Solaris Resource Manager。
這時限制資料庫會開啟並且啟動 SHR 排程器。請參見使用 srmadm 來啟用 Solaris Resource Manager 以取得更多有關此處理的資訊。
指派 'lost' (srmlost) 及 (srmidle) 'idle' lnode。
啟始 Solaris Resource Manager 常駐程式。
請參見啟始 Solaris Resource Manager 常駐程式 以取得更多有關此程序的資訊。
在一個適當的 lnode 上啟始其他系統常駐程式。
附錄中有說明上述處理中的步驟 1 到 3 所使用的預設指令集。
特別重要的是一個 lnode 的常駐程式(會永久執行的系統維護處理)附件而非 root lnode。附加至 root lnode 的處理會特別排程,並且將永遠獲得它們需求的所有 CPU 資源,因此最好不要附加任何可能會對 root lnode 造成 CPU 影響的處理。附加常駐程式至其自身的 lnode 可讓中央管理員為它們配置一個適當的 CPU 配分。
在開機程序當中,每個新的處理都會從其雙親處理承繼其 lnode 附件。因為 init 處理被附加至 rootlnode,所以全都屬於後續處理。直到執行 Solaris Resource Manager 初始指令集並且開啟 lnode 資料庫之後,處理才能附加至其他的 lnode之上,而且到時也只有在一個處理進行一個明確的 setuid 系統呼叫(如使用 login(1))或是特別要求 Solaris Resource Manager 附加至一個如 srmuser( 1SRM) 指令命名的 lnode 時才會發生。以 setuid 檔模式位元集來執行一個程式並無法改變 lnode 附件。
結果所有在系統啟始時自動啟動的系統程式會被附加到 root lnode。我們不希望看到這種情形,因為附加至 root lnode 上的處理會佔用太多 CPU 資源,因而嚴重地干擾其他處理的執行。因此我們建議您,任何作為開機程序的常駐程式處理都必須明確地附加至其本身的 lnode,方法是以 srmuser 指令來調用它們。這樣將不會影響其真正或有效的 UID。
這兒以一個範例來加以說明:
/usr/srm/bin/srmuser network in.named |
以上數行可以用來取代 named(1M) 常駐程式在其啟動指令集中現有的調用。因為要事先建立 network 所以需要一位使用者的帳號及 lnode。
srmadm 指令可以讓管理員控制作業狀態以及 Solaris Resource Manager 整個系統的設置。此指令通常是在從 Solaris Resource Manager init.d( 4 )指令集 /etc/init.d/init.srm 內轉換為執行層級 2 或 3 時採用。執行它的目的在確保系統每次開機時能為所有參數設定適當的值,並且確定在使用者取得系統的存取權之前先啟用 Solaris Resource Manager 系統。 srmadm 指令也可以用來管理全域的 Solaris Resource Manager 參數。請參閱 srmadm(1MSRM) 線上援助頁,以獲得可以使用 srmadm 來設定的參數清單。Solaris Resource Manager init.d 指令集中核發的 srmadm 指令將可:
開啟限制資料庫。直到如今任何開啟的程序都被自動連結到代理的 root lnode.代理的 root lnode 可用來確保無論 Solaris Resource Manager 的作業狀態為何,處理總是有一個可用的 lnode 可以連結。因此在啟始任何非 root 的處理之前,必須先開啟限制資料庫。當限制資料庫被開啟,代理 root lnode 中的使用量屬性數值會被增入其真正 root lnode 中的對應。本技朮的限制在于無法計算使用量的淨減少額。這就確保開啟限制資料庫之前的使用量變化不被丟棄。
啟用限制的強制實施。
設定可以控制 Solaris Resource Manager SHR 排程器行為的參數,例如使用量消減率。
啟用 SHR 排程器。在此之前,SHR 排程類別中的處理是依照一個簡單的輪流法來排程的,而且 Solaris Resource Manager 系統中的 CPU 權利設定沒有任何效果。
請參閱透過 srmadm 的全域 Solaris Resource Manager 參數 以取得某些常見的 srmadm 指令調用方面的資訊。
limdaemon(1MSR) 程式是一種 Solaris Resource Manager 使用者模式常駐程式。它通常會在轉換為執行層級 2 或 3 時被調用,作為 Solaris Resource Manager init.d 指令集的最後一步。請勿將它與由 kernel 所初始的 srmgr 系統處理(SYS 類別中)混淆。下列 ps(1) 列表中顯示了這兩種處理:
# ps -efc | egrep 'limdaemon|srmgr' root 4 0 SYS 60 18:42:14 ? 0:05 srmgr root 92 1 SHR 19 18:42:32 ? 0:41 limdaemon |
接收通知訊息並且將它們傳遞至目的使用者的終端機
接收登入或登出通知訊息,保持一份所有目前進行中 Solaris Resource Manager 登入階段作業的實際記錄
定期更新目前進行中 Solaris Resource Manager 登入階段作業的所有使用者的連結時間使用量(選擇性的)
偵測是否有到達其連結時間限制的使用者,並且在寬限期之後取消處理而登出(選擇性的)
使用 syslog(3C) 來將所有動作登入 syslogd(1M)
limdaemon 在接到 Solaris Resource Manager 登入階段作業的通知後, limdaemon 會監控所有使用者的終端機連結時間,並且檢查其連結時間的限制。快要到達連結時間限制時,使用者會收到一份通知訊息。一旦超過限制時間,使用者會有一段寬限時間以終止所有處理並且登出。
limdaemon 程式會消減連結時間的使用量。如果使用連結時間限制的話,就必須執行終端機裝置類目的使用量消減。請參閱 使用limdaemon 中更多有關可用來控制 limdaemon 行為的指令行選項詳細資訊。