`
sunzixun
  • 浏览: 74789 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

<HPC>Torque 基本框架

 
阅读更多

背景

 

TORQUE provides administrators the ability to run scripts before and/or after each job executes. With such a
script, a site can prepare systems, perform node health checks, prepend and append text to output and error
log files, cleanup systems, and so forth.
The following table shows which mom runs which script. All scripts must be in the $PBS_HOME/mom_priv/
directory and be available on every compute node. $PBS_HOME by default is /usr/spool/PBS/. Mother
Superior is the pbs_mom on the first node allocated. Sisters refer to all other pbs_moms, although note that
a Mother Superior is also a sister node.

 

rpp.c 中主要是网络的收包,解包

 

可以看到torque 是通过udp来流通信的。

 

 

 

首先通过add_con 注册回调函数rpp_request()

 

接下来在

 

do_rqq()

 

通过 proto = disrsi(stream,&ret); 来获得消息的协议类型,然后去调用相应的协议处理方法

 

case rm_protocol:  资源监控的请求;

 

case im_rpotocol : 任务管理的请求

 

case is_protocol:   内部服务器的请求

 

 

 

im_request(); 对来自于另一个mom rpp 消息 进行处理

 

还是通过disrsi(stream,&ret); 按字节读取,包体组成为request(jobid,cookie,command,event,fromtast)

 

然后根据command的值分为

 

case im_join_job : 主要是来自mother superiorde 的工作消息。

 继续解析得到包体内容: auxiliary info (nodeid,nodenum,)

 这里会调用find_job 看看请求的jobid 是否已经存在 如果存在一般是错误的情况,需要清理告警

 

接下来会job_alloc 继续对任务的解析

 

job_nodes 会去解析工作的node

 

同时任务的状态为: JOB_STATE_TRANSIT;  表示正在接受新任务

 

在这个时候所有的sister会去执行 mom_priv/prologue.parallel"

 

接下来 mom_do_poll()会去看看该job是否被限制某些资源使用。

 

 

然后第一个switch做完, 系统也做好了一些关于job的准备工作。

 

如果没有匹配上第一个SWITH reply = 0. 说明下面的消息是需要反馈的。

 

下一个switch开始

 

case IM_KILL_JOB: 一般是qdel  来删除这个jobid 消息同样来自mom superior

 

case IM_SPAWN_TASK: 这里说明某个 mom job需要开始, 这样大家MOM都要开始干活

 

做了一些合法行检查之后 就要pbs_task_create()

接下来 就到了:  start_process() 这就是真正干活的地方

 

这里面会产生一个pipe,用于fork之后父进程收集子进程的信息

 

子进程 InitUserEnv() 初始化所有环境变量

然后重定向fd ,设置euid 工作目录,等工作

 

最后当然就是  execvp(argv[0],argv);

 

 

 

 

 

mother  主要的工作就是

 

         process_request()

                   dispatch_request()

 

                            case PBS_BATCH_Commit:  req_commit();

                              pj->ji_qs.ji_state = JOB_STATE_RUNNING;

                  

                            主要的执行job就是start_exec()

 

                            TMomFinalizeJob1();*

 Used by MOM superior to start the shell process.

                          perform all server level pre-job tasks, collect information

create parent-child pipes

 

                            TMomFinalizeJob2()

                                      子进程执行TMomFinalizeChild(){

                                               经过多次forksisiter类似的准备工作

                                               execve(shell,arg,vtable.v_envp);

}

 

                            TMomCheckJobChild();

 

TMomFinalizeJob3(){ 这里把JOB的做内部和外部JOB_STATE_RUNNING状态改为RUNNING

         如果失败会

         exec_bail(){

                     send_sisters(pjob,IM_ABORT_JOB); 通知所有sisters

}

 

}

 

 

 

 

 

 Torque的代码 简单而丑陋。。。HPC领域可能本来就是注重并行算法,不在意调度这些辅助库。。

 

 

 

 

分享到:
评论

相关推荐

    hpc作业调度 torque 6.1.2 (for Linux)

    torque 6.1.2 for Linux ,HPC作业调度软件,建议与maui配合使用。

    openmpi_pmix

    slurm-20.0.5&lt;br&gt; openmpi-4.0.5&lt;br&gt; pmix-3.1.4&lt;br&gt; ucx-1.9.0 &lt;br&gt; hwloc&lt;br&gt; libevent&lt;br&gt;

    hpc_user_config:我的HPC集群的点文件

    q列出所有队列qstat -fQ &lt;queue&gt;列出有关队列的完整信息qstat -u $USER在所有队列中显示您用户的所有当前作业qpeek &lt;job&gt;显示此作业的标准输出的当前内容qpeek -f &lt;job&gt;显示此作业的标准输出结束并继续收听(以Ctrl ...

    pylikwid:LIKWID C API的Python接口(https

    $ git clone https://github.com/RRZE-HPC/pylikwid.git$ cd pylikwid# Build C interface$ python setup.py build_ext -I &lt;include&gt; -L &lt;library&gt; -R &lt;library&gt;# Install module to the proper location$ python ...

    mgcpp:基于CUDA的C ++数学库

    mgcpp::device_matrix&lt; float&gt; A ({ 4 , 3 }, 2 ); mgcpp::device_matrix&lt; float&gt; B ({ 3 , 2 }, 2 ); auto C = ref(A) * ref (B); // Lazy evaluation auto result = mgcpp::eval&#40;C&#41;; 上面的代码调用了...

    HPC资料合集.zip

    HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的一些资料 HPC领域的...

    libcudacxx:整个系统的C ++标准库

    所有您需要做的就是添加cuda/std/对你的标准库包括并开始cuda::之前的任何用途std:: : # include &lt; cuda&gt;cuda::std::atomic&lt; int&gt; x; NVIDIA C ++标准库是一个开源项目。 它在可用,并包含在NVIDIA HPC SDK和CU

    ompi:打开MPI主要开发资料库

    $ tar xf openmpi-&lt;version&gt;.tar.bz2 $ cd openmpi-&lt;version&gt; $ ./configure --prefix=&lt;path&gt; |& tee config.out ...lots of output... $ make -j 8 |& tee make.out ...lots of output... $ make install |& tee ...

    dac-man:一个框架,用于跟踪,比较和分析大型科学数据集中的变化

    dacman diff &lt;old&gt; &lt;new&gt; 特征 Dac-Man比简单的diff实用程序功能强大得多。 它的速度非常快:它可以在几秒钟内从TB的数据中检索更改。 它可以在台式机以及大型超级计算机上使用。 它允许用户为任何数据集关联...

    lbann:利佛摩大型人工神经网络工具包

    LBANN:Livermore大型人工神经网络工具包Livermore大型人工神经网络工具包(LBANN)是一个开源的,以HPC为中心的深度学习培训框架,该...运行LBANN 运行LBANN的基本模板是&lt; mpi&gt; &lt; mpi&gt; \ lbann &lt; lbann-options

    OpenHPC开源HPC解决方案.pptx

    OpenHPC开源HPC解决方案.pptx

    通用:通用数字算术

    通用:仅标头的C ++模板库,用于通用数字算术 通用数字(或称通用数字)的目标是用一个数字系统代替... 基本使用模式很简单: #include &lt;universal&gt;template&lt;typename&gt;Real MyKernel(const Real& a, const Real& b)

    研究院HPC建设方案

    4.8.14 管理员工具&gt;&gt;整体HPC计算资源实时使用统计: 统计当前所有高性能机器集群的计算资源数目,运行状况,存储等使用情况。 54 4.8.15 管理员工具&gt;&gt; WEB版FTP大文件上传: 招标书中明确要求提供基于网页版的FTP上传...

    openPMD-api:用于科学IO的C ++和Python API

    具有openPMD的用于科学I / O的C ++和Python API ...# include &lt; openPMD&gt; # include &lt; iostream&gt; // ... auto s = openPMD::Series( " samples/git-sample/data%T.h5 " , openPMD::Access::READ_ONLY); for ( auto cons

    TORQUE 英文 管理手册

    TORQUE_Administrator's_Guide.pdf 英文

    Python-Deep500深度学习元框架和HPC基准测试库

    A Deep Learning Meta-Framework and HPC Benchmarking Library

    Redhat_HPC安装指南

    Redhat_HPC安装指南

    HPC高性能计算介绍.pdf

    HPC Cluster 以计算为目的,通过多个普通节点的并行计算(Parellel Processing)实现 强大的计算功能

    HPC-LWM950板号:HPC-2025L-V1.0

    HPC-LWM950板号:HPC-2025L-V1.0

    HPC集群-集群运维与管理

    HPC集群-Gridview集群综合管理系统-V1.0;HPC集群-Linux Shell编程-V1.0;HPC集群-Linux系统初级培训-V1.0;HPC集群-Linux系统管理和维护-V1.0;HPC集群-集群运维与管理技巧-V1.0

Global site tag (gtag.js) - Google Analytics