分享
 
 
 

集群作业管理OpenPBS与OpenPBS Interface Library(IFL)

王朝other·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

OpenPBS & Interface Library --by 斜月 http://blog.csdn.net/idleguy OpenPBS安装 1、 必须用root登录

2、 创建安装路径,一般是:/usr/local/OpenPBS

3、 cp OpenPBS安装包到安装路径并释放

4、 进入释放的目录,例如:$>OpenPBS_2_3_16 5、 运行OpenPBS配置脚本:

$>./configure –prefix=/usr/local/OpenPBS

./configure可以配置OpenPBS的环境,-prefix是一些安装目录的前缀,例如lib等,默认是/usr/local。可以./configure –help查看所有的参数。一般默认的就可以。

6、 编译OpenPBS:在释放的目录下make.

在make的过程中可能出现如下错误:

make[4]: *** No rule to make target `', needed by `attr_atomic.o'. Stop.

make[4]: Leaving directory `/g/pbs/OpenPBS_2_3_16/src/lib/Libattr'

make[3]: *** [all] Error 2

make[3]: Leaving directory `/g/pbs/OpenPBS_2_3_16/src/lib/Libattr'

make[2]: *** [all] Error 2

make[2]: Leaving directory `/g/pbs/OpenPBS_2_3_16/src/lib'

make[1]: *** [all] Error 2

make[1]: Leaving directory `/g/pbs/OpenPBS_2_3_16/src'

make: *** [all] Error 2

这需要一个补丁来解决,参见附录

7、 安装OpenPBS:编译成功后,make install

8、 创建节点(node)文件

/usr/spool/PBS/server_priv/nodes

文件内容是节点的机器名。例如

node1

node2

……

当然可以有更具体的设置. 包括机群系统中所有结点的描述,如主机名,属性和cpu的数目。结点文件的格式为:hostname [:ts] [property…] [np=NUMBER] 。

9、 建立MOM进程配置文件

在{PBS_HOME}/mom_priv目录下建立资源管理器守护进程的配置文件config。所谓{PBS_HOME}可以在安装的第一步./configure的时候指定,相关参数:

--set-server-home={YOUR_PBS_HOME},一般不用指定,用默认值就好了。默认值为/usr/spool/PBS

config文件的内容通常包括:

$logevent0x1ff

$clienthost server_host

其中$logevent是为了设置记录作业执行事件日志的掩码,当其值设为0x1ff时,表示记录作业运行事件的所有日志信息;server_host是PBS服务器所在的主机名。

OpenPBS启动 1. 启动MOM进程

$> /usr/local/OpenPBS/sbin/pbs_mom

2. 启动OpenPBS服务器

$>/usr/local/OpenPBS/sbin/pbs_server –t create

(第一次启动用户服务器时,需要“–t create”选项,以后启动不需要)

3. 启动调度器

$>/usr/local/OpenPBS/sbin/pbs_sched

(建议在$HOME/.bash_profile中加入

OPENPBSDIR=/usr/local/OpenPBS

PATH=$PATH:$OPENPBSDIR/bin: $OPENPBSDIR/sbin

export OPENPBSDIR PATH

创建队列 用qmgr创建队列,例如:

#创建队列,并命名为normal

qmgr -c "c q normal"

#设定队列的类型为Execution

qmgr -c "s q normal queue_type=Execution"

#设定该队列中任务最大运行时间为24小时(CPU时间)

qmgr -c "s q normal resources_max.cput=24:00:00"

#设定该队列中任务最小运行时间为1秒(CPU时间)

qmgr -c "s q normal resources_min.cput=1"

#设定该队列中任务默认运行时间为12分钟(CPU时间)

qmgr -c "s q normal resources_default.cput=12:00"

#enable queue

qmgr -c "s q normal enabled=true"

#start queue

qmgr -c "s q normal started=true"

#将normal队列设定为默认队列

qmgr -c "s s default_queue=normal"

qmgr的参数中-c代表命令行,引号(“”)中的内容是要执行的命令。

其中c是create, s是set, q是queue,所以,上述命令可以写作:

qmgr –c “set queue normal enabled=true”

……

提交任务可以用qsub,只有非root用户才可以提交任务。

OpenPBS Interface Library OpenPBS Interface Library(IFL)是OpenPBS提供的一组函数,完成OpenPBS的任务。

例如:pbs_connect,是连接服务器的函数。

编写程序调用这些函数需要以下两个头文件:

#include

#include

和一个静态链接库:libpbs.a(可以在/usr/local/lib/中找到这个库)

因为该库用C编写需要,如果用C++编写程序调用这些函数,则需要:

extern “C”

下面是一个示例程序(subjob.cc),作用就是提交任务,如果成功返回该任务提交后在服务器上的任务标示,如果失败则返回错误代码:

extern "C"//C 函数

{

#include

#include

}

#include

int main(int argc,char** argv)

{

int Con=pbs_connect("server”); //连结服务器”server”

printf("Con=%d\n",Con);

char *Ret=pbs_submit(Con,0,argv[1],0,0);//提交任务

if (!Ret)

{

printf("ERR=%d\n",pbs_errno);//发生错误,打印错误代码

}

else

{

printf("Ret=%s\n",Ret);//打印返回的任务标识

}

delete Ret;

return 1;

}

编译该程序:

$>g++ -o subjob subjob.cc –lpbs

附录 安装OpenPBS过程中make出错 如果遇到前文提到的错误,那么通过打补丁可以解决该问题。

该补丁可以通过以下方法得到:

1. 下载:http://www.webmo.net/support/patch/pbs.patch

2. 将下面内容(=包括中的内容,不包含=)存入pbs.patch(当然,任意文件名)

======================================================================

--- /buildutils/makedepend-sh.000 Wed Nov 17 11:32:52 1999

+++ /buildutils/makedepend-sh Thu Jul 10 13:35:43 2003

@@ -574,6 +574,12 @@

test "$verbose" -lt 2 && errout='2> /dev/null'

eval $CPP $arg_cc $d/$s $errout | + sed + -e '1d' + -e '/^#.*/d' + -e '/^#.*/d' + -e '/^#.*/d' + -e '/^#.*/d' | sed -n -e "s;^\# [0-9][0-9 ]*\"\(.*\)\";$f: \1;p" | grep -v "$s\$" | sed -e 's;\([^ :]*: [^ ]*\).*;\1;' --- /src/lib/Liblog/pbs_log.c.000 Tue Dec 4 18:38:40 2001

+++ /src/lib/Liblog/pbs_log.c Thu Jul 10 13:39:45 2003

@@ -109,6 +109,7 @@

/* Global Data */

+#include

extern int errno;

char log_buffer[LOG_BUF_SIZE];

char log_directory[_POSIX_PATH_MAX/2];

--- /src/server/svr_connect.c.000 Tue Dec 4 18:39:23 2001

+++ /src/server/svr_connect.c Thu Jul 10 13:43:11 2003

@@ -113,6 +113,7 @@

struct connect_handle connection[PBS_NET_MAX_CONNECTIONS]; /* used by API */

+#include

extern int errno;

extern int pbs_errno;

将该文件cp到OpenPBS安装包的释放目录,打补丁:

$>patch -pl -b < pbs.patch

然后就可以正常安装了

使用IFL发生编译错误 Q:提示找不到库libpbs.a。

A:确定正确安装OpenPBS,lib搜索路径中包含libpbs.a.确定编译选项是-lpbs

Q:提示找不到函数,例如

undefined reference to `pbs_connect(char*)'

A:在程序中这样包含头文件:

extern "C"

{

#include

#include

}

……

Q:已经像上面那样包含头文件,仍然找不到函数,不过这次看起来有点不一样,例如:

undefined reference to `pbs_connect'

A:编译的时候,要将libpbs.a的引用放在源文件后面,例如:

$>g++ -o subjob subjob.cc –lpbs

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有