qsub 指定节点_PBS,QSUB常用命令
1、后臺(tái)提交作業(yè)qsub
語(yǔ)法: qsub [-a date_time] [-A account_string] [-e path] [-h] [-I] [-j
join] [-k keep] [-l resource_list] [-m mail_options] [-n
Node_allocation_Method [-L v1,[v2,[v3,[v4]]]]] [-M user_list] [-N
name] [-o path] [-p priority] [-q pool] [-r y|n] [-u user_list] [-v
variable_list] [-V] [script]
參數(shù):
script參數(shù)被省略時(shí),該命令可以從標(biāo)準(zhǔn)輸入獲得腳本文件名。
-a
間。格式為[[[[CC]YY]MM]DD]hhmm[.SS]。CC表示世紀(jì),YY表示年(后兩位數(shù)字),MM表示月(兩位數(shù)字),DD表示天(兩位數(shù)
字),hh表示小時(shí)(兩位數(shù)字),mm表示分(兩位數(shù)字),SS表示秒(兩位數(shù)字)。如果DD指定的是未來(lái)日子,而未指定MM,則MM缺省值為當(dāng)前月,否
則,MM的缺省值為下個(gè)月。如果hhmm指定的未來(lái)時(shí)間,而未指定DD,則DD的缺省值為當(dāng)天,否則,DD的缺省值為明天。如果提交作業(yè)時(shí)使用該選項(xiàng),當(dāng)
指定時(shí)間還沒(méi)到時(shí),作業(yè)狀態(tài)顯示為”W”。
-e
指定錯(cuò)誤輸出文件名,格式為[hostname:]path_home。Hostname是返回錯(cuò)誤輸出文件的主機(jī)名,path_home是錯(cuò)誤輸出文件
的絕對(duì)路徑,如果指定了相對(duì)路徑,則相對(duì)用戶的主目錄。不使用該選項(xiàng)時(shí),缺省值是在用戶主目錄下,以“作業(yè)名.e作業(yè)ID”命名的文件
-o
指定輸出文件名,格式為[hostname:]path_home。缺省值是在用戶主目錄下,以“作業(yè)名.e作業(yè)ID”命名的文件
-h 指定在提交作業(yè)時(shí),設(shè)置用戶級(jí)’u’掛起。如果不指定,則設(shè)置掛起類(lèi)型為’n’,即不掛起。
-I 指定作業(yè)以交互方式運(yùn)行。
-j 指定合并錯(cuò)誤輸出和實(shí)際輸出。如果指定’oe’,則合并到標(biāo)準(zhǔn)輸出文件中;如果指定’eo’,則合并到標(biāo)準(zhǔn)錯(cuò)誤輸出文件中.
-k
指定執(zhí)行主機(jī)是否保留錯(cuò)誤輸出和實(shí)際輸出。如果指定‘o’,則僅保留標(biāo)準(zhǔn)輸出;如果指定’e’,則僅保留標(biāo)準(zhǔn)錯(cuò)誤輸出;如果指定’oe’或‘eo’,則保留標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出;如果指定’n’,則不保留任何輸出。
-l 指定作業(yè)所需要的資源,設(shè)定對(duì)可消耗資源的限制。如果不設(shè)置,則無(wú)限制。例如:
resource_name[=[value]][,resource_name[=[value]],…]
LINUX系統(tǒng)可以設(shè)置的資源有cput, file, pcput, pmem, pvmem, vmem, walltime,
arch, nodes, ncpus等;
Cput指作業(yè)的所有進(jìn)程使用cpu最長(zhǎng)時(shí)間;
File指作業(yè)可以建立單個(gè)文件大小的最大限制;
Pcput指作業(yè)的單個(gè)進(jìn)程可以使用CPU的最長(zhǎng)時(shí)間;
vmem指作業(yè)可以使用的物理內(nèi)存的最大值;
Pmem指作業(yè)的單個(gè)進(jìn)程可以使用的物理內(nèi)存的最大值;
Pvmem指作業(yè)的單個(gè)進(jìn)程可以使用的虛擬內(nèi)存的最大值;
walltime指作業(yè)處于運(yùn)行狀態(tài)的最長(zhǎng)時(shí)間;
arch 指定系統(tǒng)管理員所定義的系統(tǒng)結(jié)構(gòu)類(lèi)型;
host指定作業(yè)運(yùn)行的主機(jī)名;
nodes指定作業(yè)獨(dú)占使用的結(jié)點(diǎn)數(shù)目和屬性,使用“+”可以連接多種結(jié)點(diǎn)的定義。
結(jié)點(diǎn)的屬性和主機(jī)名或數(shù)目之間通過(guò)“:”分隔。如果不指定結(jié)點(diǎn)數(shù),則缺省為1。結(jié)點(diǎn)的屬性包括ppn(每個(gè)結(jié)點(diǎn)上的進(jìn)程數(shù),缺省為1)和系統(tǒng)管理員設(shè)置的屬性(如batch、bigmem)
例如:請(qǐng)求12個(gè)結(jié)點(diǎn),不管其屬性
-l nodes=12
請(qǐng)求12個(gè)屬性為batch的結(jié)點(diǎn)和14個(gè)屬性為bigmem的結(jié)點(diǎn)
-l nodes=12:batch+14:bigmem
請(qǐng)求4個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)上使用2個(gè)CPU
-l nodes=4:ppn=2
software 指作業(yè)要求的軟件包
-m 定義何時(shí)給用戶發(fā)送有關(guān)作業(yè)的郵件。可設(shè)定的選項(xiàng)有:
n 不發(fā)送郵件
a 當(dāng)作業(yè)被批處理系統(tǒng)中斷時(shí),發(fā)送郵件
b
當(dāng)作業(yè)開(kāi)始執(zhí)行時(shí),發(fā)送郵件
e
當(dāng)作業(yè)執(zhí)行結(jié)束時(shí),發(fā)送郵件
-M 指定發(fā)送有關(guān)作業(yè)信息的郵件用戶列表。格式為user[@host][,user@[host],…]缺省值為提交作業(yè)的用戶。
-N 指定作業(yè)的名字。缺省值為腳本的名字,如果沒(méi)有指定腳本,則為STDIN。
-p 指定作業(yè)的優(yōu)先級(jí),優(yōu)先級(jí)的范圍是[-1024, +1023]。缺省值是沒(méi)有優(yōu)先級(jí)。
-q 指定作業(yè)的目的地(結(jié)點(diǎn)池),目的地可有三種格式:
pool
@server
pool@server
-r y|n 指定作業(yè)是否可重新運(yùn)行。指定‘y’時(shí),作業(yè)可以重新運(yùn)行;指定’n’時(shí),作業(yè)不能重新運(yùn)行。缺省值為’n’。
-v
格式為variable1,variable2,…或variable1=value,variable2=value,…這些變量和其值可以傳遞到作業(yè)中。
-V 指定qsub命令的所有的環(huán)境變量都傳遞到批處理作業(yè)中。
作用: 以腳本文件的形式向批處理服務(wù)器提交作業(yè)。
舉例:
運(yùn)行MPI程序的腳本cpi.ljrs如下:
#!/bin/sh
### Job name
#LJRS -N test
### Declare job non-rerunable
#LJRS -r n
### Output files
#LJRS -e test.err
#LJRS -o test.log
### Mail to user
#LJRS -m ae
### pool name (small, medium, long, verylong)
#LJRS -q dque
### Number of nodes (node property ev67 wanted)
#LJRS -l nodes=8:batch
# This job’s working directory
echo Working directory is $LJRS_O_WORKDIR
cd $LJRS_O_WORKDIR
echo Running on host ‘hostname‘
echo Time is ‘date‘
echo Directory is ‘pwd‘
echo This jobs runs on the following processors:
echo ‘cat $LJRS_NODEFILE‘
# Define number of processors
NPROCS=‘wc -l < $LJRS_NODEFILE‘
echo This job has allocated $NPROCS nodes
# Run the parallel MPI executable “a.out”
mpirun -v -machinefile $LJRS_NODEFILE -np $NPROCS cpi
1、把腳本文件cpi.ljrs提交到結(jié)點(diǎn)池dque中運(yùn)行。
$ qsub cpi.ljrs
35.console
$ qstat
Job id Name User TimeUse S Pool
35.console cpi zhangxq 0:00:00 R dque
2、把腳本作業(yè)cpi.ljrs提交到結(jié)點(diǎn)池long中運(yùn)行,并且當(dāng)作業(yè)開(kāi)始運(yùn)行時(shí),給用戶發(fā)送電子郵件。
$qsub -P long -m b cpi.ljrs $qstat
Job id Name User TimeUse S Pool
36.console cpi zhangxq 0 R long
3、使用15個(gè)結(jié)點(diǎn)運(yùn)行cpi.ljrs,運(yùn)行時(shí)間不能大于2小時(shí),作業(yè)占用的內(nèi)存能大于15mb
$qsub –l nodes=15,walltime=2:00:00,mem=15mb cpi.ljrs
4、綜合考慮CPU、內(nèi)存、緩沖區(qū)、硬盤(pán)等因素的使用情況,設(shè)置其權(quán)值分別為5, 4, 3, 2.
$qsub –l nodes=5 -n syn –L 5, 4, 3, 2 cpi.ljrs
5、使用-I和–l選項(xiàng)在指定的結(jié)點(diǎn)上交互式運(yùn)行作業(yè)
$ qsub –I -l nodes=c0101
運(yùn)行該命令后,系統(tǒng)將自動(dòng)切換到c0101的虛擬終端,所有的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出均都顯示在該終端上.
在系統(tǒng)出現(xiàn)”waiting to jobid to
start”時(shí),用戶若按^C鍵,即可中斷該交互作業(yè).當(dāng)該交互作業(yè)已經(jīng)啟動(dòng)后,用戶除了交互式運(yùn)行作業(yè)外,還可進(jìn)行以下操作:
~. 該命令將使qsub退出,且終止作業(yè)。
~^Z掛起qsub,作業(yè)依然保持運(yùn)行狀態(tài),無(wú)任何輸入輸出。用戶可以在本地shell上提交命令。
~^Y部分掛起qsub,因?yàn)檫€可以給作業(yè)發(fā)送輸入,而且接受作業(yè)的輸出的同時(shí),還可以在本地shell提交命令。
2、查看狀態(tài)qstat
語(yǔ)法:qstat [-f][-W site_specific] [job_identifier... |
destination...]
qstat -Q [-f][-W site_specific] [destination...]
qstat -B [-f] [-W site_specific] [server_name...]
參數(shù):destination可以為pool,@server,pool@server
作用:查看作業(yè)、結(jié)點(diǎn)池和批處理服務(wù)器的狀態(tài)。命令格式一可以輸出所指定作業(yè)ID或者結(jié)點(diǎn)池中所有作業(yè)的狀態(tài),命令格式二可以輸出每個(gè)結(jié)點(diǎn)池的狀態(tài)信息,命令格式三可以輸出服務(wù)器的狀態(tài)。
舉例:
1. 顯示已經(jīng)配置的所有結(jié)點(diǎn)池狀態(tài)信息。
qstat -q
2. 顯示已經(jīng)提交的作業(yè)狀態(tài)信息
qstat -a
3. 顯示指定作業(yè)的所有狀態(tài)信息
$ qstat -f 23.console
mtime = Sun Apr 28 19:54:48 2002
Output_Path = console:/home/zhangxq/cpi.o23
Priority = 0
qtime = Sun Apr 28 19:54:48 2002
Rerunable = True
Resource_List.cput = 00:00:59
Resource_List.nodect = 2
Resource_List.nodes = 2:ppn=1
Variable_List = LJRS_O_HOME=/home/zhangxq,LJRS_O_LANG=en_US
……
4. 顯示服務(wù)器的狀態(tài)
$qstat –B
Server Max Tot Que Run Hld Wat Trn Ext Status
console 0 0 0 0 0 0 0 0 Active
3、查詢作業(yè)qselect
語(yǔ)法:qselect [-a [op]date_time] [-A account_string] [-h old_list] [-l
resource_list] [-N name] [-p [op]priority] [-q destination] [-r
y|n] [-s states] [-u user_list]
參數(shù):op表示某一個(gè)作業(yè)屬性值和選項(xiàng)參數(shù)值之間的關(guān)系。如
.eq. (等于)
.ne. (不等于)
.ge. (大于或等于)
.gt. (大于)
.le. (小于)
其它參數(shù)含義見(jiàn)qsub命令。
作用:列出符合選項(xiàng)要求的作業(yè)ID。這些作業(yè)來(lái)自于單個(gè)服務(wù)器。如果沒(méi)有任何選項(xiàng),該命令則列出該用戶被授權(quán)的服務(wù)器上的所有作業(yè)。對(duì)那些普通用戶來(lái)說(shuō),該命令只顯示該用戶所提交的作業(yè)。
舉例:
1. 查詢用戶所提交的作業(yè)
$ qsub -q long cpi.ljrs
28.console
$ qselect
25.console
28.console
2. 查詢指定結(jié)點(diǎn)池中的作業(yè)
$ qstat
Job id Name User TimeUse S Pool
25.console cpi zhangxq 0 Q dque
29.console cpi zhangxq 0 R long
$ qselect -P dque
25.console
3. 查詢指定主機(jī)上的作業(yè)
$ qstat
Job id Name User TimeUse S Pool
25.console cpi zhangxq 0 Q dque
29.console cpi zhangxq 0 R long
$ qselect -P @console
25.console
29.console
4、掛起作業(yè)qhold
語(yǔ)法:qhold [-h
hold_list] job_identifier …
作用:掛起批處理作業(yè)。掛起有三種類(lèi)型:普通用戶級(jí)‘u’、管理員級(jí)(操作員級(jí))‘o’、系統(tǒng)級(jí)‘s’,缺省值為不掛起‘n’。用戶只能在用戶級(jí)別掛起自己提交的作業(yè),操作員可以在用戶級(jí)和操作員級(jí)掛起任何作業(yè),系統(tǒng)管理員可以在任何級(jí)別上掛起任何作業(yè)。
在執(zhí)行該命令時(shí),如果作業(yè)在運(yùn)行結(jié)點(diǎn)池里排隊(duì),那么作業(yè)將直接被掛起;如果作業(yè)處于運(yùn)行狀態(tài),為了中斷作業(yè)的執(zhí)行,必須采取其他辦法。如果被掛起作業(yè)的主
機(jī)系統(tǒng)支持一致點(diǎn)檢查或者重新啟動(dòng),則掛起正在運(yùn)行作業(yè)將引發(fā)以下操作:首先檢查作業(yè)的一致性,然后釋放該作業(yè)所占用的資源,最后該作業(yè)位于執(zhí)行結(jié)點(diǎn)池
中,處于掛起狀態(tài);如果被掛起作業(yè)的主機(jī)系統(tǒng)不支持一致點(diǎn)檢查或者重新啟動(dòng),則僅設(shè)置指定的掛起作業(yè)類(lèi)型,而實(shí)際上并不能掛起,除非調(diào)用qrerun命令
重新運(yùn)行該作業(yè)時(shí),該掛起請(qǐng)求才生效。
舉例:
1.
使用普通用戶身份掛起作業(yè)
$ qhold -h u
25.console $ qstat
Job id Name User TimeUse S Pool
25.console
cpi zhangxq 0 H dque
2.
以操作員身份掛起作業(yè)
$ qhold -h o
25
qhold:
Unauthorized Request 25.console
$ su root
$ qhold -h o
25
$ qstat
Job id Name User TimeUse S Pool
25.console
cpi zhangxq 0 H dque
5、釋放作業(yè)qrls
語(yǔ)法:qrls [-h
hold_list] job_identifier ...
作用:釋放被掛起的批處理作業(yè)。由于作業(yè)的掛起有三種類(lèi)型:USER、OPERATOR和SYSTEM。所以,要釋放不同類(lèi)型的作業(yè)掛起,用戶就必須具有相應(yīng)的權(quán)限。缺省為USER級(jí)
舉例:釋放在普通用戶和操作員級(jí)被掛起的作業(yè)。
$ qstat
Job id Name
User TimeUse S Pool
25.console cpi zhangxq 0 H dque
$ qrls -h uo
25
$ qstat
Job id Name User TimeUse S Pool
25.console
cpi zhangxq 0 Q dque
6、重新運(yùn)行作業(yè)qrerun
語(yǔ)法:qrerun job_identifier ...
作用:重新運(yùn)行所指定的作業(yè)。
舉例:如果作業(yè)允許別重新執(zhí)行(缺省值是可以重新運(yùn)行)。ROOT用戶運(yùn)行該命令,可以終止本次運(yùn)行,把該作業(yè)放入其原來(lái)所在的結(jié)點(diǎn)池中,重新運(yùn)行。
$ qrerun 27
qrerun: Unauthorized Request 27.console
$ su – root
$ qstat
Job id Name User TimeUse S Pool
25.console cpi zhangxq 0 Q dque
27.console cpi zhangxq 0 R dque
$ qrerun 27
$ qstat
Job id Name User TimeUse S Pool
25.console cpi zhangxq 0 Q dque
27.console cpi zhangxq 0 R dque
7、更改作業(yè)屬性qalter
語(yǔ)法:qalter [-a date_time] [-A account_string] [-e path] [-h
hold_list] [-j join] [-k keep] [-l resource_list] [-m mail_options]
[-M user_list] [-N name] [-o path] [-p priority] [-r c] [-u
user_list] job_identifier...
參數(shù):各參數(shù)的含義見(jiàn)qsub命令。
作用:更改批處理作業(yè)的屬性。主要修改所指定作業(yè)ID的相關(guān)屬性(選項(xiàng)表中所列出的屬性)。
舉例:1. 更改批處理作業(yè)的運(yùn)行時(shí)間屬性。
$ qalter -a 0309251000 23.console
2. 更改給用戶發(fā)送郵件的時(shí)間為作業(yè)中止和運(yùn)行結(jié)束時(shí)
$ qalter –m ae 23.console
8、刪除作業(yè)qdel
語(yǔ)法:qdel [-W delay|force] job_identifier ...
參數(shù):-W 當(dāng)指定delay 時(shí),表示在刪除作業(yè)前需要等待的時(shí)間(秒)
當(dāng)指定force時(shí),強(qiáng)制刪除該作業(yè)。
作用:刪除批處理作業(yè)。按照命令行中所指定的作業(yè)ID的順序來(lái)刪除作業(yè)。
舉例:$ qstat
Job id Name User TimeUse S Pool
22.console cpi zhangxq 0 Q long
$ qdel 22
9、給作業(yè)發(fā)送消息qmsg
語(yǔ)法:qmsg [-E] [-O] message_string job_identifier ...
參數(shù):-E 將消息串寫(xiě)入錯(cuò)誤輸出文件
-O將消息串寫(xiě)入輸出文件
作用:給批處理作業(yè)發(fā)送消息。該命令通過(guò)給作業(yè)的所有者(批處理服務(wù)器)發(fā)送消息,從而把消息寫(xiě)入作業(yè)的輸出文件,也就是說(shuō),該命令并不是直接把消息寫(xiě)入作業(yè)的輸出文件。
舉例:給正在運(yùn)行的作業(yè)發(fā)送消息,該消息被寫(xiě)入所指定作業(yè)的錯(cuò)誤輸出文件中。
$ qstat
Job id Name User TimeUse S Pool
25.console cpi zhangxq 0 Q dque
26.console cpi zhangxq 0 R dque
$ qmsg “The job is running” 26
$ more cpi.e26
The job is running
10、在結(jié)點(diǎn)池之間移動(dòng)作業(yè)qmove
語(yǔ)法:qmove destination job_identifier ...
參數(shù):destination可以為結(jié)點(diǎn)池名
作用:把批處理作業(yè)移到其他結(jié)點(diǎn)池中去運(yùn)行。即把作業(yè)從所在的結(jié)點(diǎn)池中刪除,并放在其他結(jié)點(diǎn)池中。
舉例:
$ qstat
Job id Name User TimeUse S Pool
22.console cpi zhangxq 0 Q dque
$ qmove long 22
$ qstat
Job id Name User TimeUse S Pool
22.console cpi zhangxq 0 Q long
11、給作業(yè)發(fā)送信號(hào)qsig
語(yǔ)法:qsig [-s signal] job_identifier ...
參數(shù):參數(shù)signal可以為信號(hào)名稱,如SIGKILL,KILL,SIGNULL或者無(wú)符號(hào)整數(shù),如9、0。
作用:給正在運(yùn)行的批處理作業(yè)發(fā)送信號(hào)。如果不指定-S選項(xiàng),則發(fā)送“SIGTERM”信號(hào)。如果有下列原因之一,如用戶無(wú)權(quán)給作業(yè)發(fā)送信號(hào)、作業(yè)未處于運(yùn)行狀態(tài)和該信號(hào)請(qǐng)求對(duì)作業(yè)所運(yùn)行的系統(tǒng)無(wú)效,則拒絕執(zhí)行該命令請(qǐng)求。
12、查看和管理結(jié)點(diǎn)ljrsnodes
語(yǔ)法:ljrsnodes [- {c|o|r}] [nodename …] ljrsnodes - {a|l }]
參數(shù):-a 列出所有結(jié)點(diǎn)及其屬性,屬性包括“state”和“properties”
-c 清除結(jié)點(diǎn)列表中的“offline”或“down”狀態(tài)設(shè)置,使結(jié)點(diǎn)可以被分配給作業(yè)。
-l 以行的方式列出被標(biāo)記的結(jié)點(diǎn)的狀態(tài) -o 將指定結(jié)點(diǎn)的狀態(tài)標(biāo)記為“offline”。這將幫助管理員暫時(shí)停止某些結(jié)點(diǎn)的服務(wù)。
-r 清除指定結(jié)點(diǎn)的“offline”狀態(tài)
作用:該命令可以標(biāo)記結(jié)點(diǎn)的狀態(tài)為“offline”、“down”或“free”,也可以幫助用戶查看結(jié)點(diǎn)信息。除了”-a”
和“-l”選項(xiàng)外,使用其他選項(xiàng)需要擁有操作員和管理員權(quán)限。
舉例:1、查看所有結(jié)點(diǎn)信息
ljrsnodes -a
2、將結(jié)點(diǎn)標(biāo)記為“offline”狀態(tài)
ljrsnodes –o c0108
3、清除結(jié)點(diǎn)的“offline”狀態(tài)設(shè)置
ljrsnodes –c c0108 或 ljrsnodes –r c0108
13、查看所有計(jì)算結(jié)點(diǎn)的狀態(tài)shownodes
語(yǔ)法:shownodes [-h]
作用:按照結(jié)點(diǎn)池分類(lèi)顯示各結(jié)點(diǎn)池中結(jié)點(diǎn)的狀態(tài),結(jié)點(diǎn)狀態(tài)以不同顏色顯示。并在結(jié)點(diǎn)名后以數(shù)字代表可用CPU數(shù)和總共CPU數(shù)。例如c0101-2/2,
表示c0101結(jié)點(diǎn)可用2CPU總共2CPU,c0102-1/2表示C0102可用1CPU總共2CPU。
舉例:$shownodes –h
用戶通過(guò)qsub命令來(lái)向系統(tǒng)提交任務(wù),有兩種方式提交:腳本方式和命令行方式。(一般情況下,不允許root用戶使用qsub命令提交作業(yè))。下面先講一下用這兩種方式提交作業(yè)的過(guò)程。
腳本方式提交
用
戶將需要執(zhí)行的程序或命令寫(xiě)入腳本中,再加入一些必要或者可選的語(yǔ)句,就可以通腳本方式提交。腳本提交比較方便,用戶可以用最簡(jiǎn)單的文字編輯器(例如
vi)編寫(xiě)一個(gè)腳本,然后使用 qsub 命令提交該腳本,pbs
會(huì)按照腳本內(nèi)容執(zhí)行相應(yīng)的任務(wù)。腳本提交的不足之處就是需要用戶執(zhí)行任務(wù)前編寫(xiě)腳本。
腳本方式提交任務(wù)的一般格式為:qsub
[script_name],script_name 是任務(wù)腳本的名稱。
下面介紹 pbs
任務(wù)腳本的編寫(xiě)方法。
pbs
任務(wù)腳本包括三部分:
*
shell 說(shuō)明語(yǔ)句:用來(lái)說(shuō)明用戶使用的是哪種 shell,例如 #!/bin/sh說(shuō)明用戶需要使用 Bourne
shell,如果用戶沒(méi)有指定,則默認(rèn)為 Bourne shell
*
pbs 指示語(yǔ)句:pbs 指示語(yǔ)句是用戶用來(lái)請(qǐng)求任務(wù)運(yùn)行時(shí)所需的資源或設(shè)置任務(wù)的一些屬性的。以#PBS開(kāi)頭,如#PBS –N
taskname 是用來(lái)設(shè)置任務(wù)名稱的。pbs
指示語(yǔ)句是可選的,用戶可以不用關(guān)心它如何寫(xiě),系統(tǒng)會(huì)自動(dòng)設(shè)置。
*
pbs 指示句的一個(gè)主要作用是請(qǐng)求任務(wù)執(zhí)行時(shí)所需要的系統(tǒng)資源,如 cpu
數(shù)目,存儲(chǔ)容量,運(yùn)行時(shí)間,運(yùn)行優(yōu)先級(jí)等等。以腳本方式提交的任務(wù)的資源請(qǐng)求是通過(guò) pbs 指示語(yǔ)句,一般格式為 #PBS –l
[選項(xiàng)=] [選項(xiàng)對(duì)應(yīng)的值],如#PBS –l ncpus=5 表示請(qǐng)求 5
個(gè)cpu為之服務(wù)。系統(tǒng)資源如下所示
arch
所需要的系統(tǒng)結(jié)構(gòu),只用在資源塊中 -l arch=linux
cput
任務(wù)的所有進(jìn)程擁有的最大 cpu 執(zhí)行時(shí)間 -l cput=1:00:00
file
任務(wù)能夠創(chuàng)建的文件的大小 -l file=45mb
host
指定執(zhí)行主機(jī)的名稱 -l nodes=X:host 分配 X個(gè)主機(jī)名稱 中含有 host的執(zhí)行節(jié)點(diǎn)
mem
任務(wù)的所有進(jìn)程能夠分配到的最大物理內(nèi)存數(shù) -l mem=100mb
ncpus 請(qǐng)求的
cpu數(shù) -l ncup=5
nice 任務(wù)運(yùn)行時(shí)的
nice 優(yōu)先級(jí)值 -l nice=3
pcput
任務(wù)的任何一個(gè)進(jìn)程擁有的最大 cpu 執(zhí)行時(shí)間 -l pcput=1:00:00
pmem
任務(wù)的任何一個(gè)進(jìn)程能夠分配到的最大物理內(nèi)存數(shù) -l pmem=45mb
pvmem
任務(wù)的任何一個(gè)進(jìn)程能夠使用的虛擬內(nèi)存的最大數(shù) -l pvmem=100mb
vmem
任務(wù)的所有并發(fā)進(jìn)程能夠使用的最大虛存數(shù) -l pvmem=100mb
walltime
任務(wù)可以處于運(yùn)行態(tài)的最大 wall-clock 時(shí)間 -l walltime=1:00:00
custom
resources 用戶自定義資源
最常用的幾種資源是:walltime,
ncpus, mem, host。其它可以不用太關(guān)心。
資源請(qǐng)求的兩種方式:
a、
資源塊方式:資源塊是將任務(wù)所需的資源作為一個(gè)整體,這個(gè)整體中說(shuō)明了所需要的各種資源的數(shù)目。其格式為:-l
select=[N:]chunk[+[N:]chunk…],如qsub –l
select=2:ncpus=3:mem=4gb:arch=linux
,select=2表示需要2個(gè)這樣的資源塊,一個(gè)資源塊包括3個(gè)cpu,4gb的內(nèi)存,系統(tǒng)結(jié)構(gòu)要求是linux,即總共需要6個(gè)cpu,8gb的內(nèi)
存。再如:-l
select=2:ncpus=1:mem=10GB+3:ncpus=2:mem=8GB:arch=solaris注意中間的+號(hào),是兩個(gè)資源塊的分
隔符
b、請(qǐng)求全任務(wù)(job-wide)資源:格式為
–lkeyword=value[,keyword=value
...]如:qsub -l ncpus=4,mem=123mb,arch=linux
任務(wù)(程序或命令):可以是用戶程序(如C程序),也可以是系統(tǒng)命令
下面是一個(gè)完整的任務(wù)腳本例子,腳本名為
mytask:
1.
#!/bin/sh//指明所用的
shell
2.
#PBS –N mytask//設(shè)置任務(wù)名稱
3.
#PBS -l walltime=1:00:00//請(qǐng)求任務(wù)執(zhí)行時(shí)間
4.
#PBS -l
select=ncpus=4:mem=400mb//請(qǐng)求任務(wù)執(zhí)行所需資源
5.
#PBS -j oe//設(shè)置相關(guān)屬性(文件合并)
6.
date /t//系統(tǒng)命令(打印日期時(shí)間)
7.
.\my_application//所要執(zhí)行的任務(wù)(當(dāng)前目錄名為
my_application的任務(wù))
8.
date /t//系統(tǒng)命令
第
1 行說(shuō)明所用的 shell;第 2 至5 行是 pbs 指示語(yǔ)句,設(shè)置了任務(wù)的一些屬性,并請(qǐng)求了資源;第 6
至8行是要執(zhí)行的命令及任務(wù)。
編寫(xiě)完腳本后,使用
qsub 命令提交腳本,在 shell下輸入:
qsub
mytask
后敲回車(chē)。
系統(tǒng)會(huì)輸出一個(gè)任務(wù)標(biāo)識(shí)符:sequence-number.servername,如
220.cnode01。sequence-number是任務(wù)編號(hào),后面需要用這個(gè)號(hào)查看任務(wù)的執(zhí)行狀態(tài),ervername
是
pbs server的名稱。
命令行方式提交
命令行方式提交不用寫(xiě)腳本,用戶可以直接從命令行輸入。輸入的內(nèi)容基本上和在腳本中輸入的相同。其基本格式如下:
qsub//輸入qsub命令后回車(chē)
[directives]//pbs指示語(yǔ)句(以#PBS為前綴)
[tasks]//任務(wù)或命令
ctrl-D//結(jié)束輸入,提交任務(wù)
對(duì)于上面用腳本方式提交的任務(wù),用命令行方式提交的格式如下:
1.
qsub
2.
#PBS –N mytask
3.
#PBS –l walltime=1:00:00
4.
#PBS –l select=ncpus=4:mem=400mb
5.
#PBS -j oe
6.
date /t
7.
./my_application
8.
date /t
注:以命令行方式提交任務(wù)時(shí),這些命令選項(xiàng)都要以
pbs 指示語(yǔ)句的格式給出,即選項(xiàng)之前要加前綴#PBS。
任務(wù)提交后,用戶如果要知道任務(wù)的當(dāng)前運(yùn)行狀態(tài),可以通過(guò)
qstat 命令查詢。qstat 命令的常用選項(xiàng)有:
無(wú)選項(xiàng):當(dāng) qstat
命令不帶任何選項(xiàng)時(shí),以默認(rèn)方式顯示任務(wù)信息,例如
[soofree@node32]$
qstat
Job
idNameUserTime
UseSQueue
—————-—————-—————-——————
569.node32testsoofree0Rsmall
其中,Job id
是任務(wù)的標(biāo)識(shí)符,Name 是任務(wù)名稱,User是任務(wù)所有者,Time Use 是CPU使用時(shí)間,S 是任務(wù)當(dāng)前狀態(tài)(本例中
R表示正在運(yùn)行),Queue表示任務(wù)所在隊(duì)列。任務(wù)的狀態(tài)如下:
*
B只用于任務(wù)向量,表示任務(wù)向量已經(jīng)開(kāi)始執(zhí)行
*
E任務(wù)在運(yùn)行后退出
*
H任務(wù)被服務(wù)器或用戶或者管理員阻塞
*
Q任務(wù)正在排隊(duì)中,等待被調(diào)度運(yùn)行
*
R任務(wù)正在運(yùn)行
*
S任務(wù)被服務(wù)器掛起,由于一個(gè)更高優(yōu)先級(jí)的任務(wù)需要當(dāng)前任務(wù)的資源
*
T任務(wù)被轉(zhuǎn)移到其它執(zhí)行節(jié)點(diǎn)了
*
U由于服務(wù)器繁忙,任務(wù)被掛起
*
W任務(wù)在等待它所請(qǐng)求的執(zhí)行時(shí)間的到來(lái)(qsub
-a)
*
X只用于子任務(wù),表示子任務(wù)完成
再舉一例,使用-a
選項(xiàng)指定任務(wù)開(kāi)始執(zhí)行時(shí)間:
[soofree@nod32]$
qsub -a 2102 test
571.node32
[soofree@node32]$
qstat
Job
idNameUserTime
Use SQueue
—————-
—————- —————- ———– — ——–
570.cnode01testsoofree0Wdefault
此時(shí)任務(wù)狀態(tài)(S)顯示
W,表示任務(wù)正在等待執(zhí)行時(shí)間的到來(lái)
PBS 命令與使用
PBS(Portable Batch
System)是由NASA開(kāi)發(fā)的靈活的批處理系統(tǒng)。它被用于集群系統(tǒng)、超級(jí)計(jì)算機(jī)和大規(guī)模并行系統(tǒng)。PBS主要有如下特征:
易用性:為所有的資源提供統(tǒng)一的接口,易于配置以滿足不同系統(tǒng)的需求,靈活的作業(yè)調(diào)度器允許不同系統(tǒng)采用自己的調(diào)度策略。
移植性:符合POSIX 1003.2標(biāo)準(zhǔn),可以用于shell和批處理等各種環(huán)境。
適配性:可以適配與各種管理策略,并提供可擴(kuò)展的認(rèn)證和安全模型。支持廣域網(wǎng)上的負(fù)載的動(dòng)態(tài)分發(fā)和建立在多個(gè)物理位置不同的實(shí)體上的虛擬組織。
靈活性:支持交互和批處理作業(yè)。
1、PBS命令
PBS提供4條命令用于作業(yè)管理。
(1)?qsub?命令—用于提交作業(yè)腳本
命令格式:
qsub ?[-a
date_time] [-c interval] [-C directive_prefix]
[-e path] [-I] [-j join] [-k keep]
[-l resource_list]?[-m
mail_options]
[-M user_list][-N name] [-o path]
[-p priority] [-q destination] [-r c]
[-S path_list] [-u user_list][-v
variable_list] [-V]
[-W additional_attributes]
[-z]
[script]
參數(shù)說(shuō)明:因?yàn)樗捎玫倪x項(xiàng)一般放在pbs腳本中提交,所以具體見(jiàn)PBS腳本選項(xiàng)。
例:#
qsub?aaa.pbs?提交某作業(yè),系統(tǒng)將產(chǎn)生一個(gè)作業(yè)號(hào)
(2)?qstat?命令—用于查詢作業(yè)狀態(tài)信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R]
[-Q][-q][-B][-u]
參數(shù)說(shuō)明:
-f?jobid?列出指定作業(yè)的信息
-a列出系統(tǒng)所有作業(yè)
-i列出不在運(yùn)行的作業(yè)
-n?列出分配給此作業(yè)的結(jié)點(diǎn)
-s列出隊(duì)列管理員與scheduler所提供的建議
-R列出磁盤(pán)預(yù)留信息
-Q?操作符是destination id,指明請(qǐng)求的是隊(duì)列狀態(tài)
-q?列出隊(duì)列狀態(tài),并以alternative形式顯示
-au
userid?列出指定用戶的所有作業(yè)
-B?列出PBS Server信息
-r?列出所有正在運(yùn)行的作業(yè)
-Qf
queue?列出指定隊(duì)列的信息
-u?若操作符為作業(yè)號(hào),則列出其狀態(tài)。
若操作符為destination
id,則列出運(yùn)行在其上的屬于user_list中用戶的作業(yè)狀態(tài)。
例:# qstat -f
211查詢作業(yè)號(hào)為211的作業(yè)的具體信息。
(3)
qdel?命令—用于刪除已提交的作業(yè)
命令格式:qdel?[-W?間隔時(shí)間]?作業(yè)號(hào)
命令行參數(shù):
例:# qdel -W 15
211?15秒后刪除作業(yè)號(hào)為211的作業(yè)
(4)?qmgr?命令—用于隊(duì)列管理
qmgr -c "create
queue batch queue_type=execution"
qmgr -c "set queue
batch started=true"
qmgr -c "set queue
batch enabled=true"
qmgr -c "set queue
batch resources_default.nodes=1"
qmgr -c "set queue
batch resources_default.walltime=3600"
qmgr -c "set server
default_queue=batch"
2、PBS腳本文件
PBS腳本文件由腳本選項(xiàng)和運(yùn)行腳本兩部分組成。
(1) PBS作業(yè)腳本選項(xiàng) (若無(wú)-C選項(xiàng),則每項(xiàng)前面加‘#PBS’)
-a?date_time?:?date_time格式為:[[[[CC]YY]MM]DD]hhmm[.SS]
表示經(jīng)過(guò)date_time時(shí)間后作業(yè)才可以運(yùn)行。
-c?interval?:
定義作業(yè)的檢查點(diǎn)間隔,如果機(jī)器不支持檢查點(diǎn),則忽略此選項(xiàng)。
-C?directive_prefix?:在腳本文件中以directive_prefix開(kāi)頭的行解釋為qsub的命
令選項(xiàng)。(若無(wú)此選項(xiàng),則默認(rèn)為’#PBS’?)
-e ?path:將標(biāo)準(zhǔn)錯(cuò)誤信息重定向到path
-I:以交互方式運(yùn)行
-j ?join:將標(biāo)準(zhǔn)輸出信息與標(biāo)準(zhǔn)錯(cuò)誤信息合并到一個(gè)文件join中去。
-k?keep?:定義在執(zhí)行結(jié)點(diǎn)上保留標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤信息中的哪個(gè)文件。
keep為o?表示保留前者,e表示后者,oe或eo表示二者都保留,
n表示皆不保留。若忽略此選項(xiàng),二者都不保留。
-l?resource_list?:
定義資源列表。以下為幾個(gè)常用的資源種類(lèi)。
cput=N?:
請(qǐng)求N秒的CPU時(shí)間; N也可以是hh:mm:ss的形式。
mem=N[K|M|G][B|W]:請(qǐng)求N
{kilo|mega|giga}{bytes|words}?大小的內(nèi)存。
nodes=N:ppn=M:請(qǐng)求N個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)M個(gè)處理器。
-m?mail_options?:mail_option為a:作業(yè)abort時(shí)給用戶發(fā)信;為b:作業(yè)開(kāi)始運(yùn)行發(fā)信;為e:作業(yè)結(jié)束運(yùn)行時(shí)發(fā)信。若無(wú)此選項(xiàng),默認(rèn)為a。
-M?user_list?:
定義有關(guān)此作業(yè)的mail發(fā)給哪些用戶。
-N?name?:
作業(yè)名,限15個(gè)字符,首字符為字母,無(wú)空格。
-o ?path:
重定向標(biāo)準(zhǔn)輸出到path。
-p?priority?:
任務(wù)優(yōu)先級(jí),整數(shù),[-1024,1023],若無(wú)定義則為0.
-q?destination?:?destination有三種形式:?queue ,
@server,queue@server。
-r?y|n?:
指明作業(yè)是否可運(yùn)行,y為可運(yùn)行,n為不可運(yùn)行。
-S ?shell:
指明執(zhí)行運(yùn)行腳本所用的shell,須包含全路徑。
-u?user_list?:
定義作業(yè)將在運(yùn)行結(jié)點(diǎn)上以哪個(gè)用戶名來(lái)運(yùn)行。
-v?variable_list?:
定義export到本作業(yè)的環(huán)境變量的擴(kuò)展列表。
-V:
表明qsub命令的所有環(huán)境變量都export到此作業(yè)。
-W?additional_attributes?:
作業(yè)的其它屬性。
-z:
指明qsub命令提交作業(yè)后,不在終端顯示作業(yè)號(hào)。
(2)?運(yùn)行腳本同LINUX下一般的運(yùn)行腳本文件。
[注]:腳本文件中的mpirun_rsh命令行中的節(jié)點(diǎn)列表文件要用環(huán)境變量表示
$PBS_NODEFILE,這個(gè)環(huán)境變量表示由pbs自動(dòng)分配給作業(yè)的節(jié)點(diǎn)列表;
節(jié)點(diǎn)數(shù)為命令行中指定的進(jìn)程數(shù)。
格式如下:
mpirun_rsh –np 進(jìn)程數(shù) –hostfile $PBS_NODEFILE
可執(zhí)行程序名
命令詳解如下:
Getting Status on the
System, Queues, and Jobs
Command
Short Description
Tutorial
Manual Page
list information about queues and jobs
list all queues on system
list queue limits for all queues
list all jobs with status comments
list all information known about specified job
list all information known about specified queue
List summary information about the PBS server
Submitting a Job
submit an interactive-batch job
submit job directly to a specified queue
Using the Graphical
User Interface (GUI)
Graphical User Interface to PBS commands
總結(jié)
以上是生活随笔為你收集整理的qsub 指定节点_PBS,QSUB常用命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 配置DNS服务器的需要修改的配置文件为,
- 下一篇: 为什么编程语言要从c语言学起,在那么多编