SGE的常用操作

網格計算和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


隊列

查看所有隊列
# qconf -sql
查看某個隊列的配置
# qconf -sq 隊列名
編輯隊列配置文件
# qconf -mq 隊列名
查看隊列中主機情況
# qselect -q 隊列名
創建隊列
# qconf -aq 對列名

主機組

查看所有主機組
# qconf -shgrpl
查看某個主機組信息
# qconf -shgrp 主機組名
編輯主機組配置
# qconf -mhgrp 主機組名
創建主機組
# qconf -ahgrp 主機組名

用戶組

查看所有用戶組
# qconf -sul
查看某個用戶組信息
# qconf -su 用戶組名
編輯用戶組配置
# qconf -mu 用戶組名
創建用戶組並把用戶添加到用戶組
# qconf -au 用戶名 用戶組名

qstat使用

# qstat -f
# qstat -explain
# qstat -j jobid

qmod使用

# qmod -cq 隊列名
# qmod -cj job名

修改shell

# qconf -mconf
# qconf -mq 隊列名

限制單個計算節點可以使用的資源

# qconf -me 節點名

qsub使用(投遞任務)

qsub –cwd –l vf=1G –q common.q –l h=compute-0-0 test.sh
test.sh:
#!/bin/bash
#$ –S /bin/bash
sleep 100;

啓用-l vf參數

查看配置參數
# qconf -sc
修改配置參數
# qconf -mc
#name               shortcut   type        relop requestable consumable default  urgency
#—————————————————————————————-
virtual_free        vf         MEMORY      <=    YES         YES        0        0
#………………………………………………………………………………………………

注意:在管理主節點上進行修改之後最好同步一下,將配置同步到計算節點當中

rocks sync users
rocks sync config 同步到其他節點


常用命令

qsub命令用來向SGE提交批處理作業,SGE支持單或多節點作業。

qsh命令用來提交帶xterm交互式作業,在執行主機上開啓X-windows.

qlogin命令與qsh相似也是提交交互式作業到隊列中,只是它不開啓X-windows,而是利用現在的終端傳送I/O,該命令與遠程主機建立telnet連接,使用標準的server-client命令

qrsh命令與qlogin類似,與遠程主機通過rsh連接。

qalter可用來改變處於pending狀態的作業屬性。

qresub命令允許用戶通過拷貝處於pengdingruning狀態的作業來創建新的作業。新建作業與原作業具有相同的屬性,並被分配了新的jobIDhold狀態。該命令可用來先拷貝一個作業再修改其屬性。

qdel  刪除任務

qmod  修改隊列和任務屬性

qstat        查看任務和隊列狀態

qacct 此命令從羣集日誌文件中抽取任意帳戶信息。

qmon 此命令爲羣集和隊列配置提供用戶界面。

qdel 用戶、操作人員或管理人員可使用此命令向作業或其子集發送信號。

qhold 此命令阻止已提交作業的執行。

qhost 此命令顯示Sun Grid Engine 執行主機的狀態信息。
qconf 管理隊列

qsub常用選項

-a date_time 作業開始運行時間

-b y[es]|n[o]判斷作業指定是二進制文件或scriptsy :是 nscripts

-display 使用X-windows

-dl date_time 定義作業到期時間,在作業到期時間之前,作業的優先級會逐步提高,直到管理員指定的最高級別。

-e 指定輸出error文件的路徑及文件名

-hard 定義作業被調度的硬性要求

-h 作業hold類型。u:表示用戶hold,s:表示系統holdo:表示被操作員holdn:取消hold

U:取消用戶holdS:取消系統holdO:取消操作員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命令可使腳本文件變成可執行文件。一旦調用腳本,即可啓動相應的命令解釋器(例如, cshtcshsh 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_qmastersge_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 主機名


常見錯誤處理

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 腳本錯誤。

可能的解決方案1Sun Grid Engine 5.3 (企業版)批處理作業中,沒有與這些作業關聯的終端。您必須從登錄文件中刪除所有stty 命令,或者用一條在處理前檢查終端的if 語句把它們括起來。

可能的解決方案2添加“#$ -S /bin/sh”

常見錯誤處理

問題–您可以從命令行運行作業腳本,但通過qsub 命令運行時失敗。

可能原因1可能對作業設置了進程限制。要測試這一點,寫出執行limit limit -h 功能的測試腳本。分別在shell 提示下和通過qsub 命令交互執行兩個腳本,比較結果。

可能原因2系統同步未完成

可能的解決方案1確保將配置文件中用於在shell 中設置限制的所有命令刪除。

可能的解決方案2rocks-usercluster-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

再就具體問題進行相關處理,一般的問題有:

計算節點未掛載數據盤,出現文件找不到的錯誤。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章