Sun網(wǎng)格引擎(Sun Grid, SGE)是一種來自于 SUN Microsystem的分布式資源管理和調(diào)度系統(tǒng)泣懊,它用來在基于UNIX的計(jì)算環(huán)境中優(yōu)化軟件和硬件資源的使用伸辟。SGE能用于查找資源池內(nèi)的閑置資源并利用這些資源(將用戶投遞的任務(wù)進(jìn)行排隊(duì)败砂,然后將任務(wù)交給能夠運(yùn)行的結(jié)算節(jié)點(diǎn)執(zhí)行)瘤载;它同樣用于通常的一些事務(wù)中,例如管理和調(diào)度作業(yè)到可用資源中铣减。當(dāng)然卡啰,作業(yè)調(diào)度系統(tǒng)的種類有很多静稻,除了SEG,常見的還有Condor匈辱、負(fù)載共享設(shè)施(LSF)振湾、便攜式批處理系統(tǒng)(PBS)。
對用戶而言亡脸,SGE就是一個大系統(tǒng)押搪,提供單個切入點(diǎn),以訪問強(qiáng)大而分散的資源浅碾。用戶將網(wǎng)格視作單個計(jì)算資源大州。資源管理軟件(SGE)接受由用戶提交的作業(yè)(也就是分析任務(wù)),并根據(jù)資源管理策略將作業(yè)安排在網(wǎng)格內(nèi)適當(dāng)?shù)南到y(tǒng)上執(zhí)行垂谢。用戶可以一次提交數(shù)千個作業(yè)厦画,而不必考慮他們在何處運(yùn)行,如此一來簡化了用戶的使用滥朱。
對管理者而言根暑,SGE依據(jù)管理者制定的規(guī)則力试,檢測網(wǎng)格的所有可用資源后,聚集資源购裙,并在該網(wǎng)格內(nèi)自動懂版、最優(yōu)地分配和利用資源。同時提供廣泛的工具躏率,用以監(jiān)控投放的任務(wù)躯畴。
SGE的工作流程可以分為四步:
- 接受用戶投放的任務(wù)
- 在任務(wù)運(yùn)行以前,將任務(wù)放到一個存儲區(qū)域
- 發(fā)送任務(wù)到一個執(zhí)行設(shè)備薇芝,并監(jiān)控任務(wù)的運(yùn)行
- 運(yùn)行結(jié)束返回結(jié)果并記錄運(yùn)行日志
用戶可以在提交作業(yè)時描述出作業(yè)需求的概況蓬抄,從而協(xié)助SGE的資源分配(例如,通過qsub -l
申請資源)夯到。此外嚷缭,SGE系統(tǒng)也會檢索用戶的身份以及他與項(xiàng)目或用戶組的從屬關(guān)系,根據(jù)管理者的設(shè)定規(guī)則為任務(wù)分配優(yōu)先級或等待時間耍贾。
1.節(jié)點(diǎn)的基本概念
貓毛的理解:一個節(jié)點(diǎn)也就相當(dāng)于一臺服務(wù)器
主控節(jié)點(diǎn):主控節(jié)點(diǎn)是所有集群活動的中心阅爽,控制SGE系統(tǒng)組件。一般情況荐开,主控節(jié)點(diǎn)也是管理節(jié)點(diǎn)和提交節(jié)點(diǎn)付翁。
執(zhí)行節(jié)點(diǎn):執(zhí)行節(jié)點(diǎn)有權(quán)限執(zhí)行作業(yè)的系統(tǒng),執(zhí)行節(jié)點(diǎn)有附加到它上面的隊(duì)列晃听。
管理節(jié)點(diǎn):管理節(jié)點(diǎn)有權(quán)運(yùn)行SGE系統(tǒng)的任何類型的管理操作百侧。
提交節(jié)點(diǎn):提交節(jié)點(diǎn)只允許用戶提交和控制批處理作業(yè)。具體說能扒,用戶登陸后佣渴,可以使用qsub
命令提交作業(yè),使用qstat
命令監(jiān)控作業(yè)狀態(tài)初斑。
了解隊(duì)列的概念
在SGE中辛润,隊(duì)列就是存放能在某一節(jié)點(diǎn)上運(yùn)行的所有任務(wù)的容器。一個隊(duì)列從某種方面也決定了所含任務(wù)的屬性越平。
隊(duì)列存在的本質(zhì):為任務(wù)提供服務(wù)
隊(duì)列存在的意義:(由于SGE允許同時運(yùn)行多個任務(wù)频蛔,為了優(yōu)化資源利用)系統(tǒng)會試著最小負(fù)荷的合適隊(duì)列開始新的任務(wù)
2.用戶的基本概念
管理人員:管理人員擁有完全操作SGE系統(tǒng)的能力。默認(rèn)情況秦叛,管理主機(jī)的超級用戶都具有管理人員權(quán)限晦溪。
操作員:操作員可以執(zhí)行很多管理人員命令,但是進(jìn)行配置更改除外挣跋。
擁有者:隊(duì)列擁有者可以暫腿玻或者啟動其擁有的隊(duì)列,還可以暫停或啟動其擁有的隊(duì)列中的作業(yè)舟肉。隊(duì)列擁有者沒有其他管理權(quán)限修噪。
用戶:用戶有一定的訪問權(quán)限。
3.資源檢索
3.1 qhost
-- 顯示執(zhí)行節(jié)點(diǎn)的狀態(tài)信息
其中:
- ARCH:CPU架構(gòu)
- NCPU:CPU核數(shù)
- LOAD:負(fù)載情況
3.2 qconf
-- 提供集群配置和隊(duì)列配置的用戶界面
qconf -sel
顯示“執(zhí)行主機(jī)”列表
qconf -sh
顯示“管理主機(jī)”列表
qconf -ss
顯示“提交任務(wù)主機(jī)”列表
qconf -sql
顯示“集群隊(duì)列”列表
qconf -spl
顯示“集群并行環(huán)境”列表
4. 任務(wù)投遞
使用qsub
進(jìn)行任務(wù)投遞時需要添加參數(shù)來調(diào)整qsub
的行為路媚。下面只列幾個常用的參數(shù)黄琼。
參數(shù) | 默認(rèn)值 | 說明 |
---|---|---|
-b | 表示運(yùn)行二進(jìn)制命令,而非腳本 | |
-cwd | 家目錄 | 運(yùn)行前切換至當(dāng)前目錄整慎。如此一來脏款,stdout 和 stderr 將輸出在當(dāng)前目錄 |
-wd | 定義工作目錄 | |
-A | 當(dāng)前用戶 | 任務(wù)的擁有者 |
-j | n(默認(rèn)否定) | 是否將標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出合并成一個文件 |
-m | 任務(wù)結(jié)束后,通過哪種方式通知任務(wù)擁有者:‘b’ Mail is sent at the beginning of the job; 'e' Mail is sent at the end of the job; 'a' Mail is sent when the job is aborted or rescheduled; 's' Mail is sent when the job is suspended; 'n' No mail is sent.(job開始和終止發(fā)送郵件裤园,使用 -m be 這種形式) |
|
-M | -m 郵件通知時的郵箱 | |
-p | 任務(wù)的優(yōu)先級 | |
-r | 當(dāng)操作系統(tǒng)重啟后撤师,自動重啟任務(wù) | |
-N | 任務(wù)名 | |
-o | stdout 指定標(biāo)準(zhǔn)輸出的文件夾 | |
-e | stderr 指定標(biāo)準(zhǔn)錯誤的文件夾 | |
-v | 開始任務(wù)前設(shè)置指定變量 | |
-V | 將當(dāng)前的環(huán)境變量傳遞到執(zhí)行命令的節(jié)點(diǎn)中 | |
-hold_jid | eg: -hold_jid 135 在job ID 為135 的任務(wù)完成之后運(yùn)行 |
|
-q | 指定隊(duì)列 | |
-l resource=value | 請求資源數(shù) eg:-l vf=25G -l h=node1(任務(wù)的預(yù)估內(nèi)存為25G,申請?jiān)趎ode1上運(yùn)行) 申請內(nèi)存時盡可能大于真實(shí)內(nèi)存拧揽,內(nèi)存預(yù)估偏低的話可能會導(dǎo)致節(jié)點(diǎn)跑掛掉 |
|
-pe smp | eg:-pe smp 5 申請5個線程 |
|
-S | tcsh | 規(guī)定作業(yè)的shell解釋器 -S /bin/bash 表示在bash環(huán)境下執(zhí)行命令 |
4.1 命令行投遞
bowtie2 -p 8 -x index/ref -1 data/A_1.fq -2 data/A_2.fq | samtools sort > A.bam | qsub -V -cwd -l vf=25G -S /bin/bash -pe openmpi 8 -N A.bt2
任務(wù)解釋:使用bowtie
將 A_1.fq
和 A_2.fq
和參考基因組比對生成bam文件剃盾,然后再使用samtools sort
將bam排序獲得A.bam
。
qsub
命令解釋:申請8個線程并使用openmpi進(jìn)行運(yùn)算(同時申請內(nèi)存25G)淤袜,這里定義任務(wù)名稱為 A.bt2
4.2 腳本投遞
編輯shell腳本 test.sh
痒谴,內(nèi)容如下
#!/bin/bash
#$ -V
#$ -N A.bt2
#$ -pe openmpi 8
#$ -cwd
#$ -l vf=25G
#$ -M xxx@XXX.com
#$ -m be
bowtie2 -p 8 -x index/ref -1 data/A_1.fq -2 data/A_2.fq | samtools sort > A.bam
投遞時直接qsub test.sh
5.任務(wù)查詢 qstat
qstat
是一個非常有用的任務(wù)查詢命令
-
prior
代表任務(wù)的優(yōu)先級,數(shù)值越高越優(yōu)先 -
name
為任務(wù)名稱(這里為test) -
slots ja-task-ID
線程數(shù)(這里為 1 ) -
state
為任務(wù)狀態(tài)
-- qw: 表示等待狀態(tài)
-- hqw: 任務(wù)掛起等待中铡羡,依賴于其他正在執(zhí)行的任務(wù)闰歪,待依賴的任務(wù)完成后執(zhí)行
-- Eqw: 投遞任務(wù)出錯
-- r:表示任務(wù)正在運(yùn)行
-- s:暫時掛起(往往由于優(yōu)先級更高的job搶占了資源)
-- dr:節(jié)點(diǎn)掛了之后,刪除任務(wù)就會出現(xiàn)這個狀態(tài)蓖墅,只有節(jié)點(diǎn)重啟之后,任務(wù)才會消失
認(rèn)識幾個qstat
的常用參數(shù) -
qstat -f
查看用戶任務(wù) -
qstat -j jobId
按任務(wù)id查看 -
qstat -explain a|c|A|E -j jobID
查看任務(wù)并給出解釋 -
qstat -u user
查看指定用戶投遞的任務(wù)
6. 其余幾個SGE 常用命令
6.1查看可用節(jié)點(diǎn) qselect
qselect 的語法:qselect [options]
常用參數(shù):
qselect -U
查看指定用戶的可用隊(duì)列節(jié)點(diǎn)
qselect -q
查看指定隊(duì)列有哪些可用節(jié)點(diǎn)
6.2 掛起作業(yè)使用的命令
6.2.1 qhold
和 qrls
-
qhold
阻止已提交作業(yè)的執(zhí)行
qhold
的語法:qhold jobid
任務(wù)掛起后临扮,狀態(tài)變?yōu)?hqw
(任務(wù)掛起等待中论矾,待依賴的任務(wù)完成后執(zhí)行)
qhold + jobid
-
qrls
釋放先前被阻止執(zhí)行的作業(yè)
qrls
的語法:qrls jobid
qrls+jobid
任務(wù)重新運(yùn)行
6.2.2 qmod -s
和 qmod -us
-
qmod -s
暫停已經(jīng)在運(yùn)行的作業(yè)
qmod -s
的語法:qmod -s jobid
任務(wù)掛起后,狀態(tài)變?yōu)?s
(暫時掛起)
qmod -s + jobid
任務(wù)暫停 -
qmod -us
啟動暫停的作業(yè)
qmod -us
的語法:qmod -us jobid
qmod -us + jobid
啟動暫停的作業(yè)
attention: qmod -s
和 qmod -us
還可以用于暫停和啟動隊(duì)列杆勇,
前提是擁有對應(yīng)的隊(duì)列管理權(quán)限贪壳。
6.3 修改作業(yè)屬性 qalter
qalter
語法:qalter [參數(shù)] 修改內(nèi)容 jobid
常用參數(shù):
-q
:修改指定隊(duì)列
-l
:修改限制資源
-N
:修改指定作業(yè)名稱
-P
:修改指定項(xiàng)目名稱
這里以修改指定作業(yè)名稱 qalter -N
舉例吧:
修改
jobid
為204065
的作業(yè)修改后的結(jié)果:
6.4 刪除作業(yè) qdel
qdel
常用的參數(shù):
-f
強(qiáng)制刪除
-u
刪除指定用戶的作業(yè)