[轉(zhuǎn)載]PBS作業(yè)調(diào)度應(yīng)用與說明PBS(Portable Batch System)最初由NASA的Ames研究中心開發(fā),主要為了提供一個能滿足異構(gòu)計算網(wǎng)絡(luò)需要的軟件包,用于靈活的批處理,特別是滿足高性能計算的需 要,如集群系統(tǒng)、超級計算機和大規(guī)模并行系統(tǒng)。PBS的主要特點有:代碼開放,免費獲??;支持批處理、交互式作業(yè)和串行、多種并行作業(yè),如MPI、 PVM、HPF、MPL;PBS是功能最為齊全, 歷史最悠久, 支持最廣泛的本地集群調(diào)度器之一. PBS的目前包括openPBS, PBS Pro和Torque三個主要分支. 其中OpenPBS是最早的PBS系統(tǒng), 目前已經(jīng)沒有太多后續(xù)開發(fā), PBS pro是PBS的商業(yè)版本, 功能最為豐富. Torque是Clustering公司接過了OpenPBS, 并給與后續(xù)支持的一個開源版本. PBS的應(yīng)用不同于一般的直接運行: mpirun –np number ./executable_file 直接運行上句,則只能在單個節(jié)點上進行并行計算。如果要在多個節(jié)點上并行執(zhí)行則要寫machinefile或p4pgfile,兩種文件的具體寫法參考張林波等《并行計算導(dǎo)論》。運行命令分別為: mpirun –machinefile filename mpirun –p4pg filename 應(yīng)用PBS提交任務(wù)則會形成任務(wù)隊列,依次執(zhí)行,有效分配資源,避免資源競爭。否則CPU時間片會輪流分配給各個人的任務(wù),從而影響所有人的正常作業(yè)。 torque PBS 提供對批處理作業(yè)和分散的計算節(jié)點(Compute nodes)的控制。
qmgr -c "set node node properties=cluster-name"。
echo "sleep 30" | qsub -l nodes=3。 1.0 作業(yè)提交系統(tǒng)Torque個人安裝總結(jié)(PBS) tar -zxvf torque-2.3.0.tar.gz 2. 進入到解壓后的文件夾 ./configure --with-default-server=master make make install 3. 打包, <user>必須是個普通用戶 1) [root@master torque-2.3.0]# ./torque.setup <user> 2) [root@master torque-2.3.0]# make packages 把產(chǎn)生的 tpackages , torque-package-clients-linux-x86-64.sh, torque-package-mom-linux-x86-64.sh 拷貝到所有節(jié)點。 3) 客戶端安裝 [root@master torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh -install [root@master torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh -install 4)編輯/var/spool/torque/server_priv/nodes (需要自己建立)加入如下內(nèi)容 master np=4 node01 np=4 ........ node09 np=4 5)啟動pbs_server,pbs_sched,pbs_mom,并把其寫到/etc/rc.local里使其能開機自啟動。 6)創(chuàng)建隊列 [root@master ~]# qmgr create queue students set queue students queue_type = Execution set queue students Priority = 40 set queue students resources_max.cput = 96:00:00 set queue students resources_min.cput = 00:00:01 set queue students resources_default.cput = 96:00:00 set queue students enabled = True set queue students started = True 4、在node0x (x=1-9,計算結(jié)點上) [root@node0x torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh --install [root@node0x torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh --install 然后啟動pbs_mom ,把pbs_mom寫入/etc/rc.local 1.2 Torque PBS使用 useradd test passwd test 輸入test密碼 到/var/yp下make一下 2、配置普通用戶的ssh su test ssh-keygen -t dsa cd .ssh cat id_pub.dsa >> authorized_keys chmod 600 authorized_keys 3、編寫作業(yè)腳本,見下文 4、啟動mpd mpdboot -n 10 -f mfa mfa內(nèi)容: master:4 node01:4 …. node09:4 5、提交,查詢,刪除作業(yè) 提交作業(yè):qsub pbsjob [test1@master pbstest]$ qsub pbsjob 48.master 作業(yè)提交后會有一個作業(yè)號 查詢作業(yè):qstat [test1@master pbstest]$ qstat
刪除作業(yè):qdel 作業(yè)號 [test1@master pbstest]$ qdel 48 2.0 PBS服務(wù)開啟操作流程 1) 在主節(jié)點上打開PBS服務(wù) /etc/init.d/pbs_server start 2) 在主節(jié)點和其他節(jié)點打開PBS客戶端。主節(jié)點雖是服務(wù)端,但也可參加計算,因而要打開客服。依次執(zhí)行如下: /etc/init.d/pbs_mom start 3) 在所有節(jié)點上打開調(diào)度器 /etc/init.d/maui.d start 對于這些PBS的功能開啟有幾個相同的參量: status 查看狀態(tài) restart 重啟 stop 終止 start 開啟 4) 接下來是檢查是否可以提交作業(yè) pbsnodes –a 返回free即表示可以提交作業(yè)。 5) 寫腳本vim pbs_ fdtd_TE_xyPML_MPI_OpenMP #!/bin/bash #PBS -l nodes=5:ppn=4 規(guī)定使用的節(jié)點數(shù)nodes以及每個節(jié)點能跑多少核ppn #PBS –N taskname 任取一作業(yè)任務(wù)名taskname cd $PBS_O_WORKDIR 到工作目錄下(此為PBS提供的環(huán)境變量) mpirun -np 20 ./fdtd_TE_xyPML_MPI_OpenMP 執(zhí)行mpirun一句可以用-machinefile或-p4pg 命令參量制定 6) 提交 qsub pbs_ fdtd_TE_xyPML_MPI_OpenMP 7) 可用qstat查看作業(yè)任務(wù),具體參量參看下文。流程終結(jié)! 3.0 PBS常用命令和選項 #!/bin/bash #PBS -l nodes=20 #PBS -N snaphu #PBS -j oe #PBS -l walltime=24:00:00 #PBS -l cput=1:00:00 #PBS -q dque cd $PBS_O_WORKDIR cat $PBS_NODEFILE $PBS_NODEFILE> NODEFILE mpirun -np ./mpitest 將這個腳本保存成submit然后qsub submit就將這個mpitest的任務(wù)提交給了系統(tǒng)。腳本中#PBS為腳本選項,用于設(shè)置一些參數(shù)。 #PBS -l表示資源列表,用于設(shè)定特定任務(wù)所需的一些參數(shù)。這里的nodes表示并行環(huán)境下可以使用的節(jié)點數(shù),而walltime表示任務(wù)最大時限,而cput 表示cpu時間的最大時限,運行時間和cpu使用時間超過對應(yīng)的時限,任務(wù)就會以超時退出。這三個參數(shù)不是PBS腳本參數(shù),而是并行環(huán)境所需的參數(shù)。 #PBS -N表示任務(wù)名稱。 #PBS -j表示系統(tǒng)輸出,如果是oe,則標(biāo)準(zhǔn)錯誤輸出(stderr)和標(biāo)準(zhǔn)輸出(stdout)合并為stdout,如果是eo,則合并為stderr,如果沒有設(shè)定或設(shè)定為n,則stderr和stdout分開。 #PBS -q表示當(dāng)前任務(wù)選用的隊列。在并行環(huán)境下,一個系統(tǒng)中往往有多個隊列,任務(wù)提交后,將在所選的隊列中排除等候。系統(tǒng)中有哪些隊列可以用qstat -q查看。 PBS腳本文件由腳本選項和運行腳本兩部分組成。 1) PBS作業(yè)腳本選項(若無-C選項,則每項前面加‘#PBS’)
mpirun –np 進程數(shù) ./可執(zhí)行程序名 3.2 PBS 命令與選項 1. qsub 命令:用于提交作業(yè)腳本 命令格式: qsub [-a date_time] [-e path] [-I] [-l resource_list] [-M user_list] [-N name] [-S path_list] [-u user_list] [-W additional_attributes] 例:# qsub aaa.pbs 提交某作業(yè),系統(tǒng)將產(chǎn)生一個作業(yè)號 2. qstat 命令:用于查詢作業(yè)狀態(tài)信息 命令格式: qstat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u] 參數(shù)說明: -f jobid 列出指定作業(yè)的信息 -a 列出系統(tǒng)所有作業(yè) -i 列出不在運行的作業(yè) -n 列出分配給此作業(yè)的結(jié)點 -s 列出隊列管理員與scheduler所提供的建議 -R 列出磁盤預(yù)留信息 -Q 操作符是destination id,指明請求的是隊列狀態(tài) -q 列出隊列狀態(tài),并以alternative形式顯示 -au userid 列出指定用戶的所有作業(yè) -B 列出PBS Server信息 -r 列出所有正在運行的作業(yè) -Qf queue 列出指定隊列的信息 -u 若操作符為作業(yè)號,則列出其狀態(tài)。 若操作符為destination id,則列出運行在其上的屬于user_list中用戶的作業(yè)狀態(tài)。 例:# qstat -f 211 查詢作業(yè)號為211的作業(yè)的具體信息。 3. qdel 命令:用于刪除已提交的作業(yè) 命令格式: qdel [-W 間隔時間] 作業(yè)號 例:# qdel -W 15 211 15秒后刪除作業(yè)號為211的作業(yè) 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" |
|