網格計算和SGE
從
概念上講,網格很簡單。它是執行任務的計算資源的集合。對用戶而言,它就是一個大系統,提供單個切入點,以訪問強大而分散的資源。用戶將網格視做單個計算
資源
SGE的工做原理
Sun Grid Engine
軟件爲用戶提供了向
Sun Grid Engine
系統提交要求計算的任務的方法,以透明地分配相關的工做負荷。用戶能夠向
Sun Grid Engine
系統提交批處理做業、交互式做業和並行做業。
Sun Grid Engine
用如下方式調解可用資源和做業需求。
經過
Sun Grid Engine
系統提交做業的用戶描述出做業需求的概況。此外,系統還要檢索用戶的身份以及他或她與項目或用戶組的從屬關係。用戶提交做業的時間也將存儲起來。
SGE的組成
節點(
Hosts
)
後臺程序(
Daemons
)
sge_qmaster
–
the Master Daemon
sge_schedd
–
the Scheduler Daemon
sge_execd
–
the Execution Daemon
sge_commd
–
the Communication Daemon
隊列(
Queues
)
經常使用命令
qsub
命令用來向
SGE
提交批處理做業,
SGE
支持單或多節點做業。
qsh
命令用來提交帶
xterm
交互式做業,在執行主機上開啓
X-windows.
qlogin
命令與
qsh
類似也是提交交互式做業到隊列中,只是它不開啓
X-windows
,而是利用如今的終端傳送
I/O
,該命令與遠程主機創建
telnet
鏈接,使用標準的
server-client
命令
qrsh
命令與
qlogin
相似,與遠程主機經過
rsh
鏈接。
qalter
可用來改變處於
pending
狀態的做業屬性。
qresub
命令容許用戶經過拷貝處於
pengding
或
runing
狀態的做業來建立新的做業。新建做業與原做業具備相同的屬性,並被分配了新的
job
ID
和
hold
狀態。該命令可用來先拷貝一個做業再修改其屬性。
qdel 刪除任務
qmod 修改隊列和任務屬性
qstat 查看任務和隊列狀態
qacct
–
此命令從羣集日誌文件中抽取任意賬戶信息。
qmon
–
此命令爲羣集和隊列配置提供用戶界面。
qdel
–
用戶、操做人員或管理人員可以使用此命令向做業或其子集發送信號。
qhold
–
此命令阻止已提交做業的執行。
qhost
–
此命令顯示
Sun Grid Engine
執行主機的狀態信息。
qconf 管理隊列
qsub經常使用選項
-a date_time
做業開始運行時間
-b y[es]|n[o]
判斷做業指定是二進制文件或
scripts
。
y
:是
n
:
scripts
-display
使用
X-windows
-dl date_time
定義做業到期時間,在做業到期時間以前,做業的優先級會逐步提升,直到管理員指定的最高級別。
-e
指定輸出
error
文件的路徑及文件名
-hard
定義做業被調度的硬性要求
-h
做業
hold
類型。
u
:表示用戶
hold,s:
表示系統
hold
,
o
:表示被操做員
hold
,
n
:取消
hold
,
U
:取消用戶
hold
,
S
:取消系統
hold
,
O
:取消操做員
hold
。
-i
定義輸入文件
-V
可使用。
可使用
-v PWD
來代替
-cwd
-j y[es]|n[o]
定義做業的標準錯誤輸出是否寫入的輸出文件中
-l resource=value,
代表做業運行所須要的資源。
-m b|e|a|s|n
。定義郵件發送規則。
b
:做業開始時發送。
e
:做業結束時發送。
a
:做業失敗時發送
s
:做業掛起時發送。
n
:不發送
-M user[@host]
定義郵件地址
-notify
:定義發送
SIGSTOP or SIGKILL
信號的延遲時間
-now y[es]|n[o]
:當即執行做業
-N
做業名
-o [[hostname]:]path
:定義輸出文件路徑、文件名
-P project_name
:定義項目名稱
-p priority
:定義優先級
-pe parallel_environment
:定義並行環境
-q wc_queue_list
:定義做業運行隊列
-R y[es]|n[o]
:定義是否爲做業保留資源。
-r y[es]|n[o]
:定義做業失敗後是否從新運行
-soft
定義做業被調度的軟性要求
-u username,
只有
qlter
命令可使用該參數。修改做業的用戶名
-v variable
:定義環境變量
-verbose
使
qrsh
命令輸出信息
-verify
驗證做業參數時使用
-V
傳遞當前命令的全部環境變量
qconf經常使用選項算法
% 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
腳本。
資源需求定義
實際上要執行主機成功完成做業,大部分做業要求一些先決條件。這些先決條件包括足夠的可用內存、安裝所需軟件或某種操做系統體系結構。並且,羣集管理者也常常對羣集中的機器加上一些使用限制。例如,做業可以使用的
CPU
時間就經常受到限制。
資源需求示例
% qsub -l arch=solaris64,h_vmem=750M,permas=1 \
permas.sh
要求至少有
750 MB
內存的
solaris64
主機,且該主機要有可用的
permas
許可證。
SGE
如何分配資源
資源分配算法
1.
讀入並分析全部缺省的請求文件。
2.
處理腳本文件的內嵌選項。
3.
提交做業時讀取全部腳本的內嵌選項,而不考慮其在腳本文件中的位置。
4.
從命令行讀取和分析全部請求。
SGE
如何分配資源
評估請求優先順序
1.
腳本
/
缺省請求文件從左到右
2.
腳本
/
缺省請求文件從上到下
3.
命令行從左到右
SGE
如何分配資源
評估請求優先順序
1.
腳本
/
缺省請求文件從左到右
2.
腳本
/
缺省請求文件從上到下
3.
命令行從左到右
SGE如何分配資源
分配所請求的硬性資源。若請求無效,將拒絕提交。若提交時沒法知足一個或多個請求(例如被請求的隊列正忙),做業將假脫機,稍後從新調度。若全部硬性請求都能知足,將分配這些資源,做業能夠運行。
檢查所請求的軟性資源。即便部分或所有請求沒法知足,做業仍可運行。若多個隊列(已知足硬性資源請求)提供了部分軟性資源列表(重疊或不一樣),
Sun GridEngine
軟件將選擇知足最多軟性請求的隊列。
提交做業
做業優先級
關
於不一樣做業的調度過程順序,缺省狀況下應用先進先出
(fifo)
規則。全部暫掛(還沒有調度)做業均插入到一個列表中,第一個提交的做業在列表的頭部,接下來是第二項提交的做業,等等。首先嚐試調度先提交的做業。若至少
有一個可用的合適隊列,則做業將獲得調度。
Sun Grid Engine
軟件此後將試圖調度第二項做業,而不論第一項做業是否已分配。暫掛做業中的此優先順序可經過由羣集管理員分配給做業的優先級值覆蓋。實際的優先級值可經過
使用
qstat
命令顯示(優先級值包含在標題爲
P
的暫掛做業顯示的最後一欄)
等份額調度
fifo
規則有時會致使問題,尤爲是若用戶試圖同時提交一系列做業的狀況下(例如,經過
shell
腳本發出一個接一個的提交)。全部後來提交的和指定到同一組隊列的做業均不得不等待很長的時間。等份額調度將已擁有運行做業的用戶的做業排列在優先級列表
的結尾,從而避免了這一問題。排序僅在同一優先級值範圍的做業中執行。若
Sun Grid Engine
調度程序配置項
user_sort
設置爲
TRUE
(請參考
sched_conf
手冊頁以得到細節),激活等份額調度。
隊列選擇
Sun Grid Engine
系統不分配請求非特定隊列的做業,若是它們不能即時啓動的話。此類做業將在
sge_qmaster
中標記爲假脫機,該命令會不時嘗試從新調度它們。因而,做業將分配給下一個可用的合適隊列。與此相反,在請求中指明隊列名的做業將直接進入該隊列,不管它
們是否能啓動者處於假脫機狀態。
若做業被調度,而且有多個空閒隊列知足其資源請求,則在合適的隊列中,一般做業將被分配給負荷最輕的主機上的隊列。
羣集管理者可將此依賴於負荷的方案更改成固定的順序算法。
監視和控制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
主機名
常見錯誤處理
sql
sge_qmaster
日誌文件:
/opt/gridengineer//default/spool/qmast/message
qstat -j <
做業
ID>
qalter -w v <
做業
ID>
問題–
做業的輸出文件顯示:
Warning: no access to tty; thus no job control in this shell...
。
可能緣由
1
–
一個或多個登陸文件包含了
stty
命令。這些命令僅在存在終端時有用。
可能緣由
2
–
腳本錯誤。
可能的解決方案
1
–
在
Sun Grid Engine 5.3
(企業版)批處理做業中,沒有與這些做業關聯的終端。您必須從登陸文件中刪除全部
stty
命令,或者用一條在處理前檢查終端的
if
語句把它們括起來。
可能的解決方案
2
–
添加「
#$ -S /bin/sh」
常見錯誤處理
問題–
您能夠從命令行運行做業腳本,但經過
qsub
命令運行時失敗。
可能緣由
1
–
可能對做業設置了進程限制。要測試這一點,寫出執行
limit
和
limit -h
功能的測試腳本。分別在
shell
提示下和經過
qsub
命令交互執行兩個腳本,比較結果。
可能緣由
2
–
系統同步未完成
可能的解決方案
1
–
確保將配置文件中用於在
shell
中設置限制的全部命令刪除。
可能的解決方案
2
–
rocks-user
,
cluster-fork 411get –all ,
做同步。
常見問題處理
問題
¨C
執行主機報告負荷爲
99.99
。
能緣由
¨C
有三種可能。
1. execd
守護程序未在主機上運行。
2.
未正確指定缺省域。
3. qmaster
主機所見的執行主機名與執行主機自身所見不一樣。
可能的解決方案
¨C
1.
做爲
root
用戶,在執行主機上經過運行
$SGE_ROOT/default/common/rcsge
腳原本啓動
execd
守護程序。
2.
做爲
Sun Grid Engine
(企業版)管理員,運行
qconf -mconf
命令並將
default_domain
變量更改成
none
。
3.
若您正使用
DNS
解析運算羣集的主機名,則請配置
/etc/hosts
和
NIS
以返回徹底合格的域名
(FQDN)
做爲主要主機名。
常見錯誤處理
報告做業或隊列處於錯誤狀態
E
處理方法:
$SGE_ROOT/default/spool/qmaster/messages
再就具體問題進行相關處理,通常的問題有:
計算節點未掛載數據盤,出現文件找不到的錯誤。shell
www.jiangyexiang.comwindows
QQ×××流:283605880dom