PBS 作業(yè)管理系統(tǒng)

上一篇中我們非常簡單地介紹了在 C 語言中嵌入 mpi4py 程序的方法。

前面我們所給出的各個例程一般都是在單臺計算機上直接使用 mpiexec 或 mpirun 執(zhí)行的,但是在實際應用中,對規(guī)模比較大的高性能計算任務,一般會提交到集群或超級計算機平臺上進行計算。集群系統(tǒng)具有低成本、高性能的特性,提供了強大的批處理和并行計算能力,代表了高性能計算機發(fā)展的新方向。在集群或者超級計算機平臺上,一般不能隨意地直接以 mpiexec 或 mpirun 運行我們的并行計算程序,而必須通過其上提供的作業(yè)管理系統(tǒng)來提交計算任務。作為集群系統(tǒng)軟件的重要組成部分,集群作業(yè)管理系統(tǒng)可以根據(jù)用戶的需求,統(tǒng)一管理和調(diào)度集群的軟硬件資源,保證用戶作業(yè)公平合理地共享集群資源,提高系統(tǒng)利用率和吞吐率。下面我們將簡要地介紹幾個常用的集群作業(yè)管理系統(tǒng):PBS,LSF 和 SLURM。下面我們首先簡要介紹 PBS 作業(yè)管理系統(tǒng)。

PBS 簡介

PBS (Protable Batch System) 作業(yè)管理系統(tǒng)會根據(jù)一個集群上的可用計算節(jié)點的計算資源管理和調(diào)度所有計算作業(yè)(無論是批處理作業(yè)還是交互式作業(yè))。

PBS 常用命令

作業(yè)控制

  • qsub:提交作業(yè)
  • qdel:取消作業(yè)
  • qsig:給作業(yè)發(fā)送信號
  • qhold:掛起作業(yè)
  • qrls:釋放掛起的作業(yè)
  • qrerun:重新運行作業(yè)
  • qmove:將作業(yè)移動到另一個隊列
  • qalter: 更改作業(yè)資源屬性

作業(yè)監(jiān)測

  • qstat:顯示作業(yè)狀態(tài)
  • showq: 查看所有作業(yè)

節(jié)點狀態(tài)

  • pbsnodes:列出集群中所有節(jié)點的狀態(tài)和屬性

PBS 作業(yè)屬性

可以用兩種方式設(shè)置 PBS 作業(yè)屬性:

  • 通過命令行參數(shù)傳遞給 qsub 命令;
  • 在 PBS 腳本中以 #PBS 方式指定。

下表列出常用的 PBS 作業(yè)屬性

屬性 取值 說明
-l 以逗號分隔的資源列表 設(shè)定作業(yè)所需資源
-N 作業(yè)名稱 設(shè)定作業(yè)名稱
-o 文件路徑 設(shè)定作業(yè)的標準輸出文件路徑
-e 文件路徑 設(shè)定作業(yè)的標準錯誤文件路徑
-p -1024 到 +1023 之間的整數(shù) 設(shè)定作業(yè)優(yōu)先級,越大優(yōu)先級越高
-q 隊列名稱 設(shè)定作業(yè)隊列名稱

比較常用的作業(yè)資源如下:

資源 取值 說明
nodes 節(jié)點資源構(gòu)型 設(shè)定作業(yè)所需計算節(jié)點資源
walltime hh:mm:ss 設(shè)定作業(yè)所需的最大 wallclock 時間
cput hh:mm:ss 設(shè)定作業(yè)所需的最大 CPU 時間
mem 正整數(shù),后面可跟 b,kb,mb,gb 設(shè)定作業(yè)所需的最大內(nèi)存
ncpus 正整數(shù) 設(shè)定作業(yè)所需的 CPU 數(shù)目

可以用以下方法設(shè)定節(jié)點資源構(gòu)型:

  1. 設(shè)定所需節(jié)點數(shù):

    nodes=<num nodes>

  2. 設(shè)定所需節(jié)點數(shù)和每個節(jié)點上使用的處理器數(shù)目:

    nodes=<num nodes>:ppn=<num procs per node>

  3. 設(shè)定所用的節(jié)點:

    nodes=<list of node names separated by '+'>

PBS 環(huán)境變量

下表列出常用的 PBS 環(huán)境變量:

環(huán)境變量 說明
PBS_ENVIRONMENT 批處理作業(yè)為 PBS_BATCH,交互式作業(yè)為 PBS_INTERACTIVE
PBS_JOBID PBS 系統(tǒng)給作業(yè)分配的標識號
PBS_JOBNAME 用戶指定的作業(yè)名稱
PBS_NODEFILE 包含作業(yè)所用計算節(jié)點的文件名
PBS_QUEUE 作業(yè)所執(zhí)行的隊列名稱
PBS_O_HOME 執(zhí)行 qsub 命令的 HOME 環(huán)境變量值
PBS_O_PATH 執(zhí)行 qsub 命令的 PATH 環(huán)境變量值
PBS_O_SHELL 執(zhí)行 qsub 命令的 SHELL 環(huán)境變量值
PBS_O_HOST 執(zhí)行 qsub 命令節(jié)點名稱
PBS_O_QUEUE 提交的作業(yè)的最初隊列名稱
PBS_O_WORKDIR 執(zhí)行 qsub 命令所在的絕對路徑

提交批處理作業(yè)

用以下命令形式提交批處理作業(yè):

$ qsub [options] <control script>

作業(yè)提交后一般會先排隊等待,PBS 系統(tǒng)會根據(jù)作業(yè)的優(yōu)先級和可用的計算資源來調(diào)度和執(zhí)行作業(yè)。

PBS 腳本本質(zhì)上是一個 Linux shell 腳本,在 PBS 腳本中可以用一種特殊形式的注釋(#PBS)作為 PBS 指令以設(shè)定作業(yè)屬性。下面是一個 PBS 腳本示例:

#!/bin/bash

# file: example.pbs

### set job name
#PBS -N example-job
### set output files
#PBS -o example.stdout
#PBS -e example.stderr
### set queue name
#PBS -q example-queue
### set number of nodes
#PBS -l nodes=2:ppn=4

# enter job's working directory
cd $PBS_O_WORKDIR

# get the number of processors
NP=`cat $PBS_NODEFILE | wc -l`

# run an example mpi4py job
mpirun -np $NP -machinefile $PBS_NODEFILE python example_mpi4py.py

用以下命令提交該作業(yè):

$ qsub example.pbs

取消或停止作業(yè)

要取消或停止一個作業(yè),需要得到該作業(yè)的作業(yè)標識號 <job ID >,可以通過 qstat 命令獲得。

取消排隊等待的作業(yè)

取消一個正在排隊等待的作業(yè),可用以下命令:

$ qdel <job ID >

停止正在運行的作業(yè)

要停止一個正在運行的作業(yè),可用向其發(fā)送 KILL 信號:

$ qsig -s KILL <job ID>

交互式作業(yè)

交互式的計算作業(yè)通過類似于下面的命令使用:

$ qsub -I [options]

例如要求 2 臺計算節(jié)點,運行在 example-queue 隊列上的交互式作業(yè),執(zhí)行如下命令:

$ qsub -I -l nodes=2 -q example-queue

執(zhí)行完以上命令,等 PBS 系統(tǒng)分配好資源后會進入所分配的第一臺計算節(jié)點,可在其命令終端上執(zhí)行交互式的計算任務,如要退出交互作業(yè),可在終端輸入 exit 命令,或使用按鍵 Ctrl+D。

以上簡要介紹了 PBS 作業(yè)管理系統(tǒng),在下一篇中我們將介紹 LSF 作業(yè)管理系統(tǒng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容