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

新增一個電腦計算批次應用程式使用者

此例說明下列指令﹕

srmkill

取消所有附加至一個 lnode 的作用中處理

財務部門擁有資料庫系統,但是一位工程部的使用者 (Joe) 必須執行一項電腦計算工作,所以想要利用系統閑置的離峰時間來使用財務部的機器。但財務部認為 Joe 的工作不如 databases 來得重要,因此只同意讓他在不干擾系統主要任務的條件下使用機器。要實施這個規定,必須新增一個群組(batch)到 lnode 資料庫中,然後將 Joe 新增至伺服器 lnode 階層的新的 batch 群組中。

%  limadm set cpu.shares=20 databases
%  limadm set cpu.shares=1 batch
%  limadm set cpu.shares=1 joe
%  limadm set sgroup=batch joe
 

圖 2-2 新增一個電腦計算批次應用程式

Graphic

這個指令序列會變更配分的配置,而讓 databases 群組擁有 20 個配分,batch 群組卻只有 1 個。這說明了如果 databases 群組是啟動的話,batch 群組(只有 Joe)的成員最多可以使用機器的 1/21databases 群組接收 20/21 或百分之 95.2 的資源,比先前決定充份處理資料庫工作的 60% + 20% = 80% 還要來得多。如果 databases 不需要其總配置,Joe 將接收到超過他原本的百分之 4.8 的配置。如果databases 完全沒有作用,Joe 的資源配置可能會高達百分之百。當配置給 databases 的可用配分數 從 1 增加到 20 的時候,就沒有必要變更配置給 db1db2 的配分。在 databases 群組之內,仍然有四個可用的配分,依照 3:1 的比率來配置。排程樹的各個層級彼此不相干;有關係的是配分在同層群組之間的比率。

儘管有上述這些保證,財務部還是要進一步確定 Joe 無法在白天最忙碌的黃金時段登入。要做到這一點,就必須對 batch 群組進行一些登入控制。要想讓控制因一天當中的時段而不同,可以執行一個指令集,變更每天開始和結束時允許登入 batch 群組的計數。例如,可以利用 crontab 登錄來實施﹕

0 6 * * * /usr/srm/bin/limadm set logins=0 batch 
0 18 * * */usr/srm/bin/limadm set logins=100 batch

上午 6:00 的時候,batch 的登入限制被降至 0,而晚上 6 的時候,限制則會被提升到最多 100 次登入。

您也可以新增另一行至 crontab 登錄中以實施更嚴格的策略﹕

01 6 * * * /usr/srm/bin/srmkill joe

使用 srmkill 指令在上午 6:01 時取消附加至 lnode Joe 的任何處理。如果工作所需的唯一資源是由 Solaris Resource Manager 所控制的話,這個指令就沒有必要。如果 Joe 的工作會佔用其他干擾正常工作的資源,那麼這個動作就很有用。一個可以鎖定關鍵性資料庫,或是主控一個 I/O 管道的工作就是一例。

Joe 現在便只能在晚間登入以執行他的工作。因為 Joe(和整個 batch 群組)比其他應用程式所擁有的配分要少得多,他的應用程式會運用少於機器的百分之 5。同樣地,nice(1) 可以用來降低附加至此工作的處理優先順序,那麼它便會以低於其他擁有同等 Solaris Resource Manager 配分的工作的優先順序來執行。

這時財務部已經完全確保了他們的資料庫應用程式擁有其系統充分的存取權,而且不會互相干擾。他們不但設法讓 Joe 能夠隔夜進行批次處理的工作,也同時確保了他的工作不會干擾與他們的任務息息相關的處理。