PBS是公開源代碼的作業管理系統,在此環境下運行,用戶不需要指定程序在哪些節點上運行,程序所需的硬件資源由PBS管理和分配。
PBS(Portable Batch System)是由NASA開發的靈活的批處理系統。它被用於集群系統、超級計算機和大規模並行系統。PBS主要有如下特征:
- 易用性:為所有的資源提供統一的接口,易於配置以滿足不同系統的需求,靈活的作業調度器允許不同系統采用自己的調度策略。
- 移植性:符合POSIX 1003.2標准,可以用於shell和批處理等各種環境。
- 適配性:可以適配與各種管理策略,並提供可擴展的認證和安全模型。支持廣域網上的負載的動態分發和建立在多個物理位置不同的實體上的虛擬組織。
- 靈活性:支持交互和批處理作業。
1、PBS命令
PBS提供4條命令用於作業管理。
(1)qsub 命令—用於提交作業腳本 命令格式:
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]
參數說明:因為所采用的選項一般放在pbs腳本中提交,所以具體見PBS腳本選項。
例:# qsub aaa.pbs 提交某作業,系統將產生一個作業號
(2)qstat 命令—用於查詢作業狀態信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
參數說明:
-f jobid 列出指定作業的信息
-a 列出系統所有作業
-i 列出不在運行的作業
-n 列出分配給此作業的結點
-s 列出隊列管理員與scheduler所提供的建議
-R 列出磁盤預留信息
-Q 操作符是destination id,指明請求的是隊列狀態
-q 列出隊列狀態,並以alternative形式顯示
-au userid 列出指定用戶的所有作業
-B 列出PBS Server信息
-r 列出所有正在運行的作業
-Qf queue 列出指定隊列的信息
-u 若操作符為作業號,則列出其狀態。若操作符為destination id,則列出運行在其上的屬於user_list中用戶的作業狀態。
例:# qstat -f 211 查詢作業號為211的作業的具體信息。
(3) qdel 命令—用於刪除已提交的作業
命令格式:qdel [-W 間隔時間] 作業號
命令行參數: 例:# qdel -W 15 211 15秒后刪除作業號為211的作業
(4) qmgr 命令—用於隊列管理
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腳本文件由腳本選項和運行腳本兩部分組成。
(1) PBS作業腳本選項 (若無-C選項,則每項前面加‘#PBS’)
-a date_time : date_time格式為:[[[[CC]YY]MM]DD]hhmm[.SS] 表示經過date_time時間后作業才可以運行。
-c interval : 定義作業的檢查點間隔,如果機器不支持檢查點,則忽略此選項。
-C directive_prefix :在腳本文件中以directive_prefix開頭的行解釋為qsub的命令選項。(若無此選項,則默認為’#PBS’ )
-e path :將標准錯誤信息重定向到path
-I :以交互方式運行
-j join :將標准輸出信息與標准錯誤信息合並到一個文件join中去。
-k keep :定義在執行結點上保留標准輸出和標准錯誤信息中的哪個文件。 keep為o 表示保留前者,e表示后者,oe或eo表示二者都保留,n表示皆不保留。若忽略此選項,二者都不保留。
-l resource_list : 定義資源列表。
以下為幾個常用的資源種類。
cput=N : 請求N秒的CPU時間; N也可以是hh:mm:ss的形式。
mem=N[K|M|G][B|W]:請求N {kilo|mega|giga}{bytes|words} 大小的內存。
nodes=N:ppn=M :請求N個結點,每個結點M個處理器。
-m mail_options :mail_option為a:作業abort時給用戶發信;為b:作業開始運行發信;為e:作業結束運行時發信。若無此選項,默認為a。
-M user_list : 定義有關此作業的mail發給哪些用戶。
-N name : 作業名,限15個字符,首字符為字母,無空格。
-o path : 重定向標准輸出到path。
-p priority : 任務優先級,整數,[-1024,1023],若無定義則為0.
-q destination : destination有三種形式: queue , @server,queue@server。
-r y|n : 指明作業是否可運行,y為可運行,n為不可運行。
-S shell : 指明執行運行腳本所用的shell,須包含全路徑。
-u user_list : 定義作業將在運行結點上以哪個用戶名來運行。
-v variable_list : 定義export到本作業的環境變量的擴展列表。
-V : 表明qsub命令的所有環境變量都export到此作業。
-W additional_attributes : 作業的其它屬性。
-z : 指明qsub命令提交作業后,不在終端顯示作業號。
mpirun_rsh –np 進程數 –hostfile $PBS_NODEFILE 可執行程序名
Command | Short Description | Tutorial | Manual Page |
qstat | list information about queues and jobs | Using qstat | qstat man page |
qstat -q | list all queues on system | HTML and PS | qstat man page |
qstat -Q | list queue limits for all queues | HTML and PS | qstat man page |
qstat -a | list all jobs on system | Using qstat | qstat man page |
qstat -au userid | list all jobs owned by user userid | Using qstat | qstat man page |
qstat -s | list all jobs with status comments | HTML and PS | qstat man page |
qstat -r | list all running jobs | HTML and PS | qstat man page |
qstat -f jobid | list all information known about specified job | Using qstat | qstat man page |
qstat -Qf queue | list all information known about specified queue | Using qstat | qstat man page |
qstat -B | List summary information about the PBS server | HTML and PS | qstat man page |
qsub jobscript | submit jobscript to PBS | Using qsub | qsub man page |
qsub -I | submit an interactive-batch job | Using qsub | qsub man page |
qsub -q queue | submit job directly to a specified queue | Using qsub | qsub man page |
xpbs | Graphical User Interface to PBS commands | Using xpbs | xpbs man page |
3、PBS環境下運行示例
(1)腳本文件編輯示例
實例1:運行mpi程序 命令行:#vi aaa.pbs
編輯的內容:
#PBS -N myjob #PBS -o /home/jz/my.out 標准輸出文件
#PBS -e /home/jz/my.err錯誤輸出文件
#PBS –l nodes=2:ppn=2 規定使用的節點數以及每個節點能跑多少核
cd 目錄(你們原來直接在節點上運行時所在的目錄)
mpirun –np 4 –hostfile $PBS_NODEFILE /home/jz/helloworld
解釋:原先大家都是在中斷輸入 mpirun_rsh…..這些命令執行程序的,現在只要把這些提交命令放在.pbs配置文件的最后,由PBS來調度執行 (自動分配節點和其它資源)。Myjob是為你此次要運行的程序起的任務名,可以改成你自己想要的名字原先輸出信息都是直接在屏幕上顯示的,現在屏幕上的 顯示全部輸出到文件中,上例中輸出文件是/home/jz/my.out文件,大家可以根據自己的需要修改(目錄,文件名)。程序運行時遇到的一些錯誤會 記錄在.err文件中。好處:因為對每個任務都設定了不同的輸出文件,所以看結果只要打開相應文件看就可以了,不需要開多個終端,里面有任務的詳細信息, 比如實際分配的是哪些節點計算,運行時間等。
#PBS –l nodes=2:ppn=2,你們程序需要幾個節點只要修改nodes后的數字就可以了,ppn=2保持不變,因為我們的機器每個節點都是雙cpu的。
mpirun –np 4 –hostfile $PBS_NODEFILE /home/jz/helloworld 此例中-np后的4是並行數(2×2=4個cpu),–hostfile $PBS_NODEFILE不需要改變。/home/jz/helloworld是你編譯好的可執行文件名,需修改。
對於每個你要運行的mpi程序都需要這樣一個.pbs配置文件 也就是說大家原來的操作是:mpirun………… 現在改成2步走:1)寫個pbs配置文件(比如xxx.pbs);2)向pbs提交(qsub xxx.pbs)
實例2:運行非mpi程序 有些用戶並不是自己編寫mpi程序,同樣也可以用pbs提交。
比如物理系運行程序時一般輸入的命令是 RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt ,那么配置文件可以這樣寫:
命令行:#vi job.pbs 編輯的內容:
#PBS -N physics_job
#PBS -o /home/physics/physics_job.out
#PBS -e /home/physics/physics_job.err
#PBS -l nodes=1:ppn=2
#PBS -r y
cd 目錄(你們原來直接在節點上運行時所在的目錄)
RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt
解釋:也就是說把原來在終端直接輸入的命令RunDMol3.sh TiFeCp2-pbe-dspp-m=1-opt放到pbs配置文件中,因為你們只要一個節點,所以nodes=1,至於用哪個節點系統自動分配,你們 肯定很關心是分配了哪個節點給你們,那么可以用qstat命令查詢(比如qstat -n)。
(2) 提交作業示例
命令行:#qsub aaa.pbs
作業提交后會有一個作業號
[test1@master pbstest]$ qsub pbsjob
48.master
(3) 作業狀態查詢示例
qstat 后加不同參數可以查看不同的信息(各參數的意思,上面有詳細的說明,你們可以一個個試驗一下,以后就知道查看哪些信息,需要哪些參數) 實例:
命令行:#qstat –a (查看作業的狀態)
解釋:Job id 是給你提交的任務分配的任務號,S(任務狀態,R表示正在運行,Q表示正在排隊等候調度)
命令行:#qstat –n (查看作業使用的節點)
命令行:#qstat –f 211 (查看有關作業運行具體信息)
刪除作業:qdel 作業號 [test1@master pbstest]$ qdel 48
轉自http://student.csdn.net/space.php?uid=124962&do=blog&id=13699