USE of Sun Grid Engine(SGE)
Jobs submition
qsub ---> submit batch job
Job information display
qstat ---> displays status listings
Job management
qhold ---> hold back a pending submitted job from execution
qrls ---> release held job for execution
qdel ---> delete a job from a queue
qmod -s ---> suspend a job from execution
qmod -us ---> release suspended job for execution
A first look at job submission:
create a shell script and make it executable
vi script1.sh # create a shell script
chmod u+x script1.sh # make it executable
the shell script
#!/bin/sh
#$ -S /bin/sh
/share/apps/bin/blastall -p blastp -i test.fa -d nr
submit shell script with a given job name (note use of -N option)?
qsub -N mytest script1.sh
check the status of job (note use of -u option)?
qstat -u test
the output of stdout and stderr appear in files in your home directory
ls *.o*, *.e*
qdel:
To terminate a job, first get the job-id with qstatqstat -u userid
Terminate the job
qdel job-id
Terminate the job that is running (forced)?
qdel -f job-id
qmod:
To suspend a job, first get the job-id with qstatqstat -u userid
Suspend the job
qmod –s job-id
Release the job for execution?
qmod -us job-id
網格計算和SGE
從概念上講,網格很簡單。它是執行任務的計算資源的集合。對使用者而言,它就是一個大系統,提供單個切入點,以通路強大而分散的資源。使用者将網格視作單個計算資源。資源管理軟體(如Sun Grid Engine)接受由使用者送出的作業,并根據資源管理政策将作業安排在網格内适當的系統上執行。使用者可以一次送出數千個作業,而不必考慮它們在何處運作。
什麼是Cluster grids?
網格的類型:Cluster grids , campus grids and global grids.
叢集網格(cluster grids)包括許多計算資源,SGE幫助我們将這些一起工作的資源合理地提供給一個項目或一個部門的使用者。
SGE的工作原理
Sun Grid Engine 軟體為使用者提供了向Sun Grid Engine 系統送出要求計算的任務的方法,以透明地配置設定相關的工作負荷。使用者可以向Sun Grid Engine 系統送出批處理作業、互動式作業和并行作業。
Sun Grid Engine用以下方式調解可用資源和作業需求。
通過Sun Grid Engine 系統送出作業的使用者描述出作業需求的概況。此外,系統還要檢索使用者的身份以及他或她與項目或使用者組的從屬關系。使用者送出作業的時間也将存儲起來。
準确地說,在隊列被定為可以對新作業執行操作的那一刻, Sun Grid Engine 系統就決定了适合該隊列的作業,并立即分派具有最高優先級或等待時間最長久的作業。
Sun Grid Engine 隊列允許同時執行許多作業。Sun Grid Engine 系統将盡量在負荷最小且最适合的隊列中開始新的作業。
為什麼用SGE?
使用者:使用者能夠自由地在單一的控制節點上投放上千個的任務,而不必關心任務在哪個節點運作,這樣就大大簡化了使用者的使用。
管理者:提供廣泛的工具,用以監控投放的任務。
SGE能做什麼?
系統接受使用者所投放的任務,并基于最優的資源管理方案,将任務列隊在适合的網格内系統上,等待運作。
SGE依據由管理者制定的規則,檢測到網格内的所有可用資源,聚集資源,并在該網格内自動地最優地配置設定和路由資源。
SGE怎樣工作?
接受使用者投放的任務;
在任務運作以前,将任務放在一個存儲區域;
發送任務到一個執行裝置,并監控任務的運作;
運作結束時寫回結果并記錄運作日志。
SGE的組成
節點(Hosts)
背景程式(Daemons)
隊列(Queues)
使用者指令(Client Commands)
Master Hosts
Execution Hosts
Administration Hosts
Submit Hosts
sge_qmaster – the Master Daemon
sge_schedd – the Scheduler Daemon
sge_execd – the Execution Daemon
sge_commd – the Communication Daemon
隊列的概念
隊列為任務提供服務;
SGE允許同時運作多個任務,系統會試着這最小負荷的合适隊列開始新的任務;
在SGE中隊列就是存放能在某一節點上運作的所有任務的容器。一個隊列從某種方面也決定了所含任務的屬性。
使用者指令
使用者指令是一組輔助程式指令。他可以幫助我們管理隊列,送出和删除任務,檢測任務的狀态,中斷/開始隊列和任務。
qacct qalter qconf qdel
qhold qhosh qlogin qmake
qmod qmon qresub qrls
qrsh qselect qsh qstat
qsub qtcsh
qacct – 此指令從群集日志檔案中抽取任意帳戶資訊。
qalter – 此指令更改已送出但正處于暫挂狀态的作業的屬性。
qconf – 此指令為群集和隊列配置提供使用者界面。
qdel – 使用者、操作人員或管理人員可使用此指令向作業或其子集發送信号。
qhold – 此指令阻止已送出作業的執行。
qhost – 此指令顯示Sun Grid Engine 執行主機的狀态資訊。
qlogin – 此指令啟動telnet 或類似的登入會話,并自動選擇負荷較低并且較
為适合的主機。
qmake – 此指令可取代标準的UNIX make 指令工具。它擴充了make 的功能,能夠将互相獨立的make 步驟配置設定到一組适合的機器。
qmod – 此指令使擁有者可以暫停或啟用隊列(将信号發送給目前與此隊列相關的所有活動程序)。
qmon – 此指令提供了X-windows Motif 指令界面和監視工具。
qresub – 此指令通過複制正在運作或暫挂的作業,建立新的作業。
qrls – 此指令釋放先前被阻止執行的作業,例如通過qhold (見上)阻止執行。
qrsh – 此指令用途很多,比如:
提供通過Sun Grid Engine 系統執行的遠端互動應用程式— 與标準的UNIX指令工具rsh 相似
允許送出批處理作業,一經執行便可支援終端I/O (标準/ 錯誤輸出和标準輸入)以及終端控制提供批處理作業送出客戶機,該客戶機在作業完成之前一直保持活動狀态允許Sun Grid Engine 軟體控制并行作業的任務遠端執行
qselect – 此指令顯示與指定選擇标準相對應的隊列名稱清單。qselect的輸出結果通常送往其它Sun Grid Engine 指令,以便對標明的一組隊列執行操作。
qsh – 此指令在負荷較低的主機上打開互動式shell (在xterm 中)。所有類型的互動式作業均可以在此shell 内運作。
qstat – 此指令列出所有與群集相關的作業和隊列的狀态。
qsub – 此指令是将作業送出到Sun Grid Engine 系統的使用者界面。
qtcsh – 此指令與衆所周知并普遍使用的Unix C-Shell (csh) 派生物tcsh 完全相容,并能替代它。它擴充了指令shell 的功能,即通過Sun Grid Engine 軟體将指定應用程式的執行透明地配置設定給适合的并且負荷較低的主機。
察看隊列屬性
% qconf ¨Csql ¨C 顯示隊列清單
% qconf -sq 隊列名 ¨C 顯示該隊列屬性
qname – 所請求的隊列名稱。
hostname – 隊列所處的主機。
processors – 多處理器系統中此隊列有權通路的處理器。
qtype – 允許在此隊列中運作的作業類型。目前包括批處理作業、互動式作業、點檢查作業、并行作業或它們的任意組合或互相轉換的作業。
slots – 可在隊列上同時執行的作業數量。
owner_list – 隊列的擁有者。
user_lists – 此參數下所列的使用者通路清單中辨別的使用者或組有權通路此隊列。
xuser_lists – 此參數下所列的使用者通路清單中辨別的使用者或組無權通路此隊列。
complex_list – 列于此參數下的屬性組與隊列相關聯,而且這些屬性組中所含的屬性構成此隊列的可請求屬性組。
complex_values – 提供給此隊列的某些屬性組屬性的指派。
察看主要主機
由于主要主機會随時可能在目前的主要主機和某個影像主要主機之間切換,主要主機的位置對使用者來說應該是透明的。
用文本編輯器,打開
/opt/grid-engineer/default/common/act_qmaster 檔案。
此檔案中有目前主要主機的名稱。
顯示執行主機
% qconf ¨Csel
顯示目前配置為執行主機的所有主機的清單。
% qconf -se 主機名稱
顯示指定的執行主機的詳細資訊
% qhost
顯示執行主機的狀态和負荷資訊
顯示管理主機
% qconf -sh
顯示有管理權限的主機清單
顯示送出主機
% qconf -ss
可請求的屬性
送出一個Sun Grid Engine 作業時,可指定該作業的需求概況。使用者可以指定作業所需的主機或隊列的屬性或特性以保證作業成功運作。Sun Grid Engine 将這些作業需求映射到Sun Grid Engine 群集的主機和隊列的配置,進而找到适合該作業的主機。
可用的屬性包括隊列特性清單、全局屬性和主機相關屬性的清單,以及管理者定義的屬性。但是,為友善起見, Sun Grid Engine 管理者通常隻将一個所有可用屬性的子集定義為可請求。
顯示可請求屬性清單
% qconf –scl
顯示已配置的屬性組清單
屬性組包含一組屬性的定義。有三種标準屬性組:
global – 針對群集全局屬性(可選)
host – 針對主機特有的屬性
queue – 針對隊列特性的屬性
% qconf -sc 屬性組名稱[,...]
顯示某個特定屬性組的屬性
名稱一欄中的顯示與qconf -sq 指令顯示的第一欄基本相同
縮寫名一欄包含可由管理者定義的第一欄中全名的縮寫
可否請求一欄表明是否可将相應的項用于qsub
關系欄定義關系運算以用于計算隊列是否滿足使用者請求
可否使用欄和預設值欄對管理者極其有用,管理者可以用它們聲明?°可使用資源?±,。使用者可以像請求其它屬性一樣請求可使用資源
使用者通路權限
獲得目前配置的ACL 清單
% qconf -sul
顯示一個或多個通路清單中的項
% qconf -su ACL 名稱[,...]
注:ACL 包含使用者帳戶名和UNIX 組名, UNIX 組名用字首“@”辨別出來。這樣即可确定您的帳戶所屬的ACL。
從指令行運作簡單作業
執行任何Sun Grid Engine 指令之前,必須設定适當的可執行搜尋路徑和其它環境條件。
% qsub /opt/grid-engineer/examples/jobs/simple.sh
qsub 指令應确認作業已成功送出:您的作業1 ("simple.sh") 已送出
% qstat 指令檢索作業的狀态資訊
若qstat 指令沒有産生輸出,則系統實際上無已知作業。結果:simple.sh.o1 和simple.sh.e1。
送出批處理作業
Shell 腳本即批處理作業,主要指內建到一個檔案中的一系列指令行指令。chmod指令可使腳本檔案變成可執行檔案。一旦調用腳本,即可啟動相應的指令解釋器(例如, csh、tcsh、sh 或ksh),解釋每條指令,其結果等同于執行腳本的使用者手動輸入這些指令。您可以在一個shell 腳本内調用任意指令、應用程式和其它shell 腳本。
腳本檔案示例
#!/bin/csh
# This is a sample script file for compiling and
# running a sample FORTRAN program under Sun Grid Engine.
cd TEST
# Now we need to compile the program 'flow.f' and
# name the executable 'flow'.
f77 flow.f -o flow
資源需求定義
實際上要執行主機成功完成作業,大部分作業要求一些先決條件。這些先決條件包括足夠的可用記憶體、安裝所需軟體或某種作業系統體系結構。而且,群集管理者也經常對群集中的機器加上一些使用限制。例如,作業可使用的CPU 時間就常常受到限制。
資源需求示例
% qsub -l arch=solaris64,h_vmem=750M,permas=1 \
permas.sh
要求至少有750 MB 記憶體的solaris64 主機,且該主機要有可用的permas 許可證。
SGE如何配置設定資源
資源配置設定算法
1. 讀入并分析所有預設的請求檔案。
2. 處理腳本檔案的内嵌選項。
3. 送出作業時讀取所有腳本的内嵌選項,而不考慮其在腳本檔案中的位置。
4. 從指令行讀取和分析所有請求。
評估請求優先順序
1. 腳本/ 預設請求檔案從左到右
2. 腳本/ 預設請求檔案從上到下
3. 指令行從左到右
配置設定所請求的硬性資源。若請求無效,将拒絕送出。若送出時無法滿足一個或多個請求(例如被請求的隊列正忙),作業将假脫機,稍後重新排程。若所有硬性請求都能滿足,将配置設定這些資源,作業可以運作。
檢查所請求的軟性資源。即使部分或全部請求無法滿足,作業仍可運作。若多個隊列(已滿足硬性資源請求)提供了部分軟性資源清單(重疊或不同), Sun GridEngine 軟體将選擇滿足最多軟性請求的隊列。
送出作業
% qsub flow.sh
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \ -S /bin/tcsh -o flow.out -j y flow.sh big.data
% qsub -N Flow -p -111 -a 200012240000.00 -cwd \
-S /bin/tcsh -o flow.out -j y -pe mpi 4-16 \
-v SHARED_MEM=TRUE,MODEL_SIZE=LARGE \ -ac JOB_STEP=preprocessing,PORT=1234 \
-A FLOW -w w -r y -m s,e -q big_q\
-M [email protected],[email protected] \
flow.sh big.data
送出互動式作業
qlogin ¨C 類似于telnet 會話,在Sun Grid Engine 軟體標明的主機上啟動。
qrsh ¨C 這是一個等效于标準的UNIX rsh 的工具。指令在Sun Grid Engine 系統標明的主機上遠端執行,若未指定要執行的指令,會在遠端主機上啟動遠端登入(rlogin) 會話。
qsh ¨C 這是一個xterm,它從執行作業的計算機啟動,其顯示設定與您的指定值或DISPLAY 環境變量相對應。若未設定DISPLAY 變量且未明确定義顯示目标, Sun Grid Engine 将把xterm 定向到送出互動式作業的主機的X 伺服器的0.0 螢幕。
排程Sun Grid Engine 作業
基本上, Sun Grid Engine 5.3 軟體使用兩套标準排程作業:
作業優先級
等份額
作業優先級
關于不同作業的排程過程順序,預設情況下應用先進先出(fifo) 規則。所有暫挂(尚未排程)作業均插入到一個清單中,第一個送出的作業在清單的頭部,接下來是第二項送出的作業,等等。首先嘗試排程先送出的作業。若至少有一個可用的合适隊列,則作業将得到排程。Sun Grid Engine 軟體此後将試圖排程第二項作業,而不論第一項作業是否已配置設定。暫挂作業中的此優先順序可通過由群集管理者配置設定給作業的優先級值覆寫。實際的優先級值可通過使用qstat 指令顯示(優先級值包含在标題為P 的暫挂作業顯示的最後一欄)
等份額排程
fifo 規則有時會導緻問題,尤其是若使用者試圖同時送出一系列作業的情況下(例如,通過shell 腳本發出一個接一個的送出)。所有後來送出的和指定到同一組隊列的作業均不得不等待很長的時間。等份額排程将已擁有運作作業的使用者的作業排列在優先級清單的結尾,進而避免了這一問題。排序僅在同一優先級值範圍的作業中執行。若Sun Grid Engine 排程程式配置項user_sort 設定為TRUE (請參考sched_conf 手冊頁以獲得細節),激活等份額排程。
隊列選擇
Sun Grid Engine 系統不配置設定請求非特定隊列的作業,如果它們不能即時啟動的話。此類作業将在sge_qmaster 中标記為假脫機,該指令會不時嘗試重新排程它們。于是,作業将配置設定給下一個可用的合适隊列。與此相反,在請求中指明隊列名的作業将直接進入該隊列,無論它們是否能啟動者處于假脫機狀态。
若作業被排程,并且有多個空閑隊列滿足其資源請求,則在合适的隊列中,通常作業将被配置設定給負荷最輕的主機上的隊列。no,群集管理者可将此依賴于負荷的方案更改為固定的順序算法。
點檢查作業
使用者級别
核心級别
點檢查作業腳本
#!/bin/sh
#Force /bin/sh in Sun Grid Engine
#$ -S /bin/csh
# Test if restarted/migrated
if [ $RESTARTED = 0 ]; then
# 0 = not restarted
# Parts to be executed only during the first
# start go in here
set_up_grid
fi
# Start the checkpointing executable
fem
#End of scriptfile
指令行操作點檢查作業
#qsub 選項自變量
除qsub -ckpt 和 -c 選項(它們請求點檢查機制并且定義對作業進行點檢查的時機)外,送出 點檢查作業的方式與正常批處理腳本相同
-ckpt 選項帶一個自變量,它是要使用的點檢查環境的名稱
-c 選項不是必需的,它也帶一個自變量。它可用于覆寫點檢查環境配置中 when 參數的定義
-c 選項的自變量
n – 不執行點檢查。此項優先級最高。
s – 檢查點僅在作業主機上的 sge_execd 關閉時才産生。
m – 按相應隊列配置中定義的最小 CPU 時間間隔産生檢查點。
x – 作業暫停時産生檢查點。
interval – 以給定時間間隔産生檢查點,但其頻率不高于min_cpu_interval 定義的值(參見上文)。時間值必須以 hh:mm:ss 形式指定(小時兩位、分鐘兩位、秒兩位,用冒号分開)。
監視和控制SGE作業
原則上,有三種方法可監視送出的作業。
使用Sun Grid Engine圖形使用者界面QMON
在指令行使用qstat指令
通過電子郵件
用qstat監視作業
% qstat
提供已送出作業的概述
% qstat -f
另外包含了有關目前配置隊列的資訊
qstat
job-ID prior name user state submit/start at queue function
231 0 hydra craig r 07/13/96 20:27:15 durin.q MASTER
232 0 compile penny r 07/13/96 20:30:40 durin.q MASTER
230 0 blackhole don r 07/13/96 20:26:10 dwain.q MASTER
233 0 mac elaine r 07/13/96 20:30:40 dwain.q MASTER
234 0 golf shannon r 07/13/96 20:31:44 dwain.q MASTER
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
注:state 欄包含的單個字元代碼含義如下:r 表示正運作,
s 表示已暫停, q 表示已排隊, w 表示在等待
qstat -f
queuename qtype used/free load_avg arch states
dq BIP 0/1 99.99 sun4 au
durin.q BIP 2/2 0.36 sun4
231 0 hydra craig r 07/13/96 20:27:15 MASTER
232 0 compile penny r 07/13/96 20:30:40 MASTER
dwain.q BIP 3/3 0.36 sun4
230 0 blackhole don r 07/13/96 20:26:10 MASTER
233 0 mac elaine r 07/13/96 20:30:40 MASTER
234 0 golf shannon r 07/13/96 20:31:44 MASTER
fq BIP 0/3 0.36 sun4
####################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS -
236 5 word elaine qw 07/13/96 20:32:07
235 0 andrun penny qw 07/13/96 20:31:43
指令行控制作業
可以使用qdel 指令取消Sun Grid Engine 作業,無論它們是正在運作還是處于假脫機狀态。qmod 指令可以暫停和取消暫停(恢複)已經在運作的作業。
使用這兩個指令都需要知道作業辨別号,此辨別号可由qsub 指令得到。若忘了辨別号,可通過qstat 檢索。
% qdel 作業ID
% qdel -f 作業ID 1, 作業ID 2
% qmod -s 作業ID
% qmod -us -f 作業ID 1, 作業ID 2
% qmod -s 作業ID. 任務ID 範圍
用qmod 控制隊列
% qmod -s 隊列名
% qmod -us -f 隊列名1 、隊列名2
% qmod -d 隊列名
% qmod -e 隊列名1 、隊列名2 、隊列名3
注意:注意– 暫停/ 取消暫停和禁用/ 啟用隊列都需要擁有者、Sun Grid Engine 管理人員或操作人員權限
SGE的管理
主要主機¨C 主要主機是一切群集活動的中心。它運作主要守護程式sge_qmaster。sge_qmaster 控制所有的Sun Grid Engine 元件(如隊列和作業),并維護關于元件狀态和使用者通路權限之類的表單。主要主機通常運作SGE排程程式sge_schedd。除了在安裝過程中執行的配置外,主要主機不需要進一步配置。
執行主機¨C 執行主機是有權執行Sun Grid Engine 作業的節點。是以,該主機上有Sun Grid Engine 隊列,并運作Sun Grid Engine 執行守護程式sge_execd 。
管理主機¨C 可為主要主機以外的其它主機賦予權限,以在Sun Grid Engine 中完成任何種類的管理活動。管理主機可用以下指令設定:qconf -ah 主機名
送出主機¨C 送出主機僅允許送出和控制批處理作業。尤其是登入到送出主機的使用者可通過qsub 送出作業,可通過qstat 或運作Sun Grid Engine 的OSF/1Motif 圖形使用者界面QMON 控制作業狀态。送出主機可用以下指令設定:qconf -as 主機名
配置管理主機
qconf -ah 主機名
添加管理主機— 将指定主機添至管理主機清單。
qconf -dh 主機名
删除管理主機— 将指定主機從管理主機清單中删除。
qconf -sh
顯示管理主機— 顯示所有目前已配置的管理主機的清單。
配置送出主機
qconf -as 主機名
添加送出主機— 将指定主機添至送出主機清單。
qconf -ds 主機名
删除送出主機— 将指定主機從送出主機清單中删除。
qconf -ss
顯示送出主機— 顯示所有目前配置為提供送出權限的主機清單。
配置執行主機
qconf -ae [ 執行主機模闆]
添加執行主機?? 此指令啟動一個編輯器,其中顯示執行主機配置模闆。
qconf -de 主機名
删除執行主機?? 将指定主機從執行主機清單中删除。執行主機配置中的所有項都将丢失。
qconf -me 主機名
修改執行主機?? 此指令啟動一個編輯器(預設情況下為vi 或$EDITOR 環境變量對應的編輯器),其中顯示指定的執行主機配置(即模闆)。通過更改模闆并将其儲存至磁盤來修改執行主機配置。
qconf -Me 檔案名
修改執行主機?? 将檔案名的内容用作執行主機配置模闆。指定檔案中的配置必須關涉現有執行主機。此執行主機的配置将由該檔案的内容代替。此qconf 選項對于脫機更改執行主機配置很有用。
qconf -se 主機名
顯示執行主機?? 顯示所指定執行主機的配置。
qconf ¨Csel
顯示執行主機清單?? 顯示配置為執行主機的主機名清單。
中止守護程式
qconf ¨Ckej
中止目前所有活動的作業,并關閉所有Sun Grid Engine 執行守護程式。
qconf -ke
SGE執行守護程式将中止,但不會取消活動的作業。
qconf ¨Cks
關閉Sun Grid Engine 排程程式sge_schedd
qconf ¨Ckm
強制終止sge_qmaster 程序
重新啟動守護程式
% <sge 根目錄>/< 單元>/common/rcsge
注意:以root 使用者身份登入到要重新啟動Sun Grid Engine 5.3 守護程式的機器。此腳本将尋找通常在此主機上運作的守護程式,然後啟動相應的守護程式。
顯示基本群集配置
% qconf –sconf
顯示全局配置
% qconf -sconf global
% qconf -sconf < 主機>
顯示主機的本地配置
修改基本群集配置