torque创建队列

合集下载

GPU集群Torque排队系统使用手册

GPU集群Torque排队系统使用手册

GPU集群Torque排队系统使⽤⼿册多媒体计算与通讯实验室GPU集群Torque排队系统使⽤⼿册袁平波 2016.5.20本实验室新购进24块K80 tesla GPU。

为了充分利⽤GPU计算资源,我们利⽤Torque来管理同学们的计算任务队列。

头结点的IP是192.168.17.240。

下⾯说明使⽤本GPU集群的⼏个步骤。

1.申请帐号.本集群有⼀个头结点和多个服务结点构成,因此提交计算作业需要在头结点上拥有帐号,需要使⽤集群的学⽣需要给我发⼀个申请邮件,同时cc给⾃⼰的导师,在导师批准后相应的帐号会被建⽴。

2.建⽴job脚本⽂件Torque管理系统不能直接提交⼆进制可执⾏⽂件,需要编写⼀个⽂本的脚本⽂件,来描述相关参数情况。

⼀个⽰例脚本⽂件myjob1.pbs如下:#PBS -N myjob1#PBS -o /home/username/myjob1.out#PBS -e /home/username/myjob1.err#PBS -l nodes=1:gpus=1:S#PBS -r ycd $PBS_O_WORKDIRecho Time is `date`echo Directory is $PWDecho This job runs on following nodes:cat $PBS_NODEFILEcat $PBS_GPUFILE./my_proc脚本⽂件中定义的参数默认是以#PBS开头的。

其中:-N 定义的是job名称,可以随意。

-o 定义程序运⾏的标准输出⽂件,如程序中printf打印信息,相当于stdout;-e 定义程序运⾏时的错误输出⽂件,相当于stderr。

-l 定义了申请的结点数和gpus数量。

nodes=1代表⼀个结点,⼀般申请⼀个结点,除⾮采⽤mpi并⾏作业;gpus=1定义了申请的GPU数量,根据应⽤实际使⽤的gpu数量来确定,S表⽰job类型,后⾯有详细描述。

曙光作业管理-调度系统安装配置手册

曙光作业管理-调度系统安装配置手册

Torque + Maui配置手册之抛砖引玉篇本文将以应用于实际案例(南航理学院、复旦大学物理系、宁波气象局)中的作业调度系统为例,简单介绍一下免费开源又好用的Torque+Maui如何在曙光服务器上进行安装和配置,以及针对用户特定需求的常用调度策略的设定情况,以便可以起到抛砖引玉的作用,使更多的人关注MAUI这个功能强大的集群调度器(后期将推出SGE+MAUI版本)。

本文中的涉及的软件版本Torque 版本:2.1.7 maui版本:3.2.6p17。

1. 集群资源管理器Torque1.1.从源代码安装Torque其中pbs_server安装在node33上,TORQUE有两个主要的可执行文件,一个是主节点上的pbs_server,一个是计算节点上的pbs_mom,机群中每一个计算节点(node1~node16)都有一个pbs_mom负责与pbs_server通信,告诉pbs_server该节点上的可用资源数以及作业的状态。

机群的NFS共享存储位置为/home,所有用户目录都在该目录下。

1.1.1.解压源文件包在共享目录下解压缩torque# tar -zxf torque-2.1.17.tar.gz假设解压的文件夹名字为: /home/dawning/torque-2.1.71.1.2.编译设置#./configure --enable-docs --with-scp --enable-syslog其中,默认情况下,TORQUE将可执行文件安装在/usr/local/bin和/usr/local/sbin下。

其余的配置文件将安装在/var/spool/torque下默认情况下,TORQUE不安装管理员手册,这里指定要安装。

默认情况下,TORQUE使用rcp来copy数据文件,官方强烈推荐使用scp,所以这里设定--with-scp.默认情况下,TORQUE不允许使用syslog,我们这里使用syslog。

Torque中的一些问题

Torque中的一些问题

说明:这里描述的问题来自: Torque3.1.1, Village2.0 dev,文中用到的代码来自开源Apache项目. 文中虽例子,但主要是辅助说明错误原因和解决办法.以给使用Turbine+Torque+Velocity的人一点帮助.Torque是apache数据库项目中一个子项目,它实现数据库的持久层,是JDO的Apache实现.自从和Turbine 项目分出来后,它形成了两部分:生成器和运行时库.生成器用来生成数据库资源和访问数据库的类,使用这些类和在运行时库的支撑下,应用程序对数据库的各种操作得以用java对象的普通用法和操作习惯实现.Torque除了用到Apache其他项目如Commons的成果外,还用到了一个开源项目:Village(/index.php?SCREEN=village),它位于JDBC API上,提供不用写sql语句就可以实现数据库的crud操作.使用它和数据库里的表以及里面的记录打交道,就象是在一个小镇,一些小屋和小屋里的人们交谈,非常祥和的感觉.它的设计也是非常简洁,占用的空间也不大,真的就象一个游者,可以很轻松的驴行天下.Torque的生成器使用了Velocity项目,该项目是java的模板语言,在生成数据库资源时,它出了全力,我们可以通过修改{Torque.dir}\templates中各子文件夹里的vm模板来适合数据库及你项目中的需要.例如,对于PostgreSQL8,Torque生成的库资源中创建数据库的sql代码中没有指定代码页,这样PostgreSQL将使用默认的SQL_ASCII设置,如果想让生成的资源指定代码页可以修改{Torque.dir}\templates\sql\db-init\postgresql中的createdb.vm,本例指定代码页为UNICODE,如下:#foreach ($databaseName in $databaseNames)drop database $databaseName;create database $databaseNameENCODING = 'UNICODE';#增加该行即可#end用Torque做为项目的持久层,其开发过程是很简单的,需要提供的总文件数是4个:在设计阶段使用的build.properties,project-schema.xml,id-table-schema.xml以及在开发阶段的运行时用到的Torque.properties.在构建阶段为每个表产生五个类文件:<table-name>.java,<table-name>Peer.java,Base<table-name>.java,Base<table-name>Peer.java,这俩文件不要修改,因为用ant重新构建时,这些文件会重新生成.把文件名称以Peer结尾的称为Peer类,实现对象关系影射(ORM),不以Peer结尾的称为数据对象,应用和数据对象交互.不以base开头的类扩展了以base开头的类.业务逻辑应该加在子类上.<table-name>MapBuilder.java,这是用于特定表<table-name>的影射文件.Peer类的crud操作就是建立在Village之上的.现在开始一个例子,项目名称是cms,以这个例子说明一些问题.这是一个cms项目的模式文件cms-schema.xml:<?xml version="1.0" encoding="gb2312" standalone="no" ?><!DOCTYPE database SYSTEM"/turbine/dtd/database.dtd"><database name="news" package="org.news.om"><table name="atts" idMethod="none" description="保存了新闻的附件信息,它和新闻存在引用关系."><column name="pagedate" javaName="pagedate" primaryKey="true" required="true" type="VARCHAR"size="8" javaNamingMethod="underscore" description="页创建日期,缩略形式"></column><column name="pagecode" javaName="pagecode" primaryKey="true" required="true" type="VARCHAR"size="5" javaNamingMethod="underscore" description="页代码"></column><column name="filename" javaName="filename" primaryKey="false" required="true" type="VARCHAR"size="30" javaNamingMethod="underscore" description="文件名称"></column><column name="oldfilename" javaName="oldfilename" primaryKey="false" required="false" type="VARCHAR"size="30" javaNamingMethod="underscore" description="旧文件名称"></column><column name="attname" javaName="attname" primaryKey="false" required="true" type="VARCHAR"size="50" javaNamingMethod="underscore" description="附件名称,由用户指定的名称"></column><column name="img" javaName="img" primaryKey="false" required="false" type="BLOB"javaNamingMethod="underscore" description="附件文件,保存大文件"></column><column name="attdes" javaName="attdes" primaryKey="false" required="false" type="VARCHAR"size="50" javaNamingMethod="underscore" description="对附件的描述"></column></table></database>我们只关注生成java文件,使用该文件Torque生成了5个类,下面是影射类AttsMapBuilder:其代码片段为:public void doBuild() throws TorqueException{dbMap = Torque.getDatabaseMap("news");dbMap.addTable("atts");TableMap tMap = dbMap.getTable("atts");tMap.setPrimaryKeyMethod("none");tMap.addPrimaryKey("atts.PAGEDATE", new String());tMap.addPrimaryKey("atts.PAGECODE", new String());tMap.addColumn("atts.FILENAME", new String());tMap.addColumn("atts.OLDFILENAME", new String());tMap.addColumn("atts.A TTNAME", new String());tMap.addColumn("atts.IMG", new Object());tMap.addColumn("atts.A TTDES", new String());}问题一:删除数据时报告错误:You must specify KeyDef attributes for this TableDataSet in order to create a Record for update.原因:因为Torque的Peer使用了Village,而KeyDef是其中一个类,该类定义为:public class KeyDef{private Vector mySelf = null;public KeyDef(){mySelf = new Vector();mySelf.addElement ("");}public KeyDef addAttrib(String name) {mySelf.addElement (name);return this;}public boolean containsAttrib (String name){return (mySelf.indexOf ((Object) name) == -1) ? false : true;}public String getAttrib (int pos){if (pos == 0)pos = 1;try{return (String) mySelf.elementAt (pos);}catch (ArrayIndexOutOfBoundsException e){return null;}}public int size(){return mySelf.size() - 1;}}该类的作用很简单,就是保存一个列名称.提供给其他类DataSet和Record使用,通过读其源码,发现Village很依赖表的primary键,如果一个表没有primary键,那么你不能更新和删除记录.解决办法就是为表创建primary键.问题二:当删除多行时,遭到操作失败.原因:Village实现的比较奇怪,就是插入更新删除记录时,若影响行数大于1时会生成一个异常,下面的代码片段位于Record类中:private int saveWithDelete (Connection connection)throws DataSetException, SQLException{PreparedStatement stmt = null;try{stmt = connection.prepareStatement (getSaveString());int ps = 1;for (int i = 1; i <= dataset().keydef().size(); i++){Value val = getValue (dataset().keydef().getAttrib(i));val.setPreparedStatementValue (stmt, ps++);}int ret = stmt.executeUpdate();setSaveType (Enums.ZOMBIE);if (ret > 1)throw new SQLException ("There were " + ret + " rows deleted with this records key value.");return ret;}catch (SQLException e1){throw e1;}finally { try{if (stmt != null)stmt.close();}catch (SQLException e2){throw e2;}}}而这个异常在org.apache.torque.util.BasePeer类中是这样处理的:public static void doDelete(Criteria criteria) throws TorqueException{Connection con = null;try{con = Transaction.beginOptional(criteria.getDbName(),criteria.isUseTransaction());doDelete(criteria, con);mit(con);}catch (TorqueException e){Transaction.safeRollback(con);throw e;}}事务回滚导致删除操作失败.实际上不仅是对删除操作这样,而且对于其它操作插入更新也是这样的.解决办法就是重写Peer子类:因为Peer类是BasePeer的子类,但doDelete(Criteria criteria)是静态方法,不能覆盖,所以我们要重新命名上面方法为doDelete1(Criteria criteria),在问题三具体给出代码.问题三:有时候表中不存在唯一标识一条记录的字段组合(除了整行记录),想以某几个字段删除行.比如本例,允许指定两个字段PAGEDATE,PAGECODE的值删除记录.有两种办法:1 为了能使字段PAGEDATE,PAGECODE的值相等的多行存在,手工删除表中的primary键,保持影射文件不变,增删改都可工作.2 修改本例的BaseAttsPeer类,这样做要注意备份这个文件.增加两个函数:doDelete1(Criteria criteria, Connection con),doDelete1(Criteria criteria),这俩函数替代BasePeer 中的doDelete(Criteria criteria, Connection con),doDelete(Criteria criteria)两个函数的功能,再把BaseAttsPeer类中定义的doDelete所有重载版本的调用改到对doDelete1的调用,就可以了.doDelete1代码片段为:public static void doDelete1(Criteria criteria) throws TorqueException{Connection con = null;try{con = Transaction.beginOptional(criteria.getDbName(), true);//criteria.isUseTransaction());doDelete(criteria, con);mit(con);}catch (TorqueException e){mit(con);//Transaction.safeRollback(con);throw e;}}/***Method to perform deletes based on values and keys in a Criteria.*@param criteria The criteria to use.*@param con A Connection.*@throws TorqueException Any exceptions caught during processing will be*rethrown wrapped into a TorqueException.*/public static void doDelete1(Criteria criteria, Connection con) throws TorqueException{DB db = Torque.getDB(criteria.getDbName());DatabaseMap dbMap =Torque.getDatabaseMap(criteria.getDbName());// Set up a list of required tables and add extra entries to// criteria if directed to delete all related records.// StringStack.add() only adds element if it is unique.HashSet tables = new HashSet();Iterator it = criteria.keySet().iterator();while (it.hasNext()){String key = (String) it.next();Criteria.Criterion c = criteria.getCriterion(key);List tableNames = c.getAllTables();for (int i = 0; i < tableNames.size(); i++){String name = (String) tableNames.get(i);String tableName2 = criteria.getTableForAlias(name);if (tableName2 != null){tables.add(new StringBuffer(name.length() + tableName2.length() + 1).append(tableName2).append(' ').append(name).toString());}else{tables.add(name);}}if (criteria.isCascade()){// This steps thru all the columns in the database.TableMap[] tableMaps = dbMap.getTables();for (int i = 0; i < tableMaps.length; i++){ColumnMap[] columnMaps = tableMaps[i].getColumns();for (int j = 0; j < columnMaps.length; j++){// Only delete rows where the foreign key is// also a primary key. Other rows need// updating, but that is not implemented.if (columnMaps[j].isForeignKey()&& columnMaps[j].isPrimaryKey()&&key.equals(columnMaps[j].getRelatedName())){tables.add(tableMaps[i].getName());criteria.add(columnMaps[j].getFullyQualifiedName(),criteria.getValue(key));}}}}}Iterator tabIt = tables.iterator();while (tabIt.hasNext()){String tab = (String) tabIt.next();KeyDef kd = new KeyDef();HashSet whereClause = new HashSet();ColumnMap[] columnMaps = dbMap.getTable(tab).getColumns();for (int j = 0; j < columnMaps.length; j++) {ColumnMap colMap = columnMaps[j];/*原来的在BasePeer类中操作KeyDef加入列字段的代码if (colMap.isPrimaryKey()){kd.addAttrib(colMap.getColumnName());} */String key = new StringBuffer(colMap.getTableName()).append('.').append(colMap.getColumnName()).toString();if (criteria.containsKey(key)){if(criteria.getComparison(key).equals(Criteria.CUSTOM)){whereClause.add(criteria.getString(key));}else{//增加下列语句,是为了提供where子句中的限定,以利于删除数据.//这种修改就避免了表一定要有primarykey的限制.kd.addAttrib(colMap.getColumnName());whereClause.add(SqlExpression.build(colMap.getColumnName(),criteria.getValue(key),criteria.getComparison(key),criteria.isIgnoreCase(),db));}}}// Execute the statement.TableDataSet tds = null;try{tds = new TableDataSet(con, tab, kd);String sqlSnippet =StringUtils.join(whereClause.iterator()," AND ");if (log.isDebugEnabled()) {log.debug("BasePeer.doDelete: whereClause=" + sqlSnippet);}tds.where(sqlSnippet);tds.fetchRecords();if (tds.size() > 1 && criteria.isSingleRecord()) {handleMultipleRecords(tds);}for (int j = 0; j < tds.size(); j++) {Record rec = tds.getRecord(j);rec.markToBeDeleted();rec.save();}} catch (Exception e) {throwTorqueException(e);} finally{if (tds != null){try{tds.close();}catch (Exception ignored){}}}}}private static void throwTorqueException(Exception e) throws TorqueException {if (e instanceof TorqueException) {throw (TorqueException) e;}else {throw new TorqueException(e);}}这种修改解决了本问题,也彻底修正了上面遇到的2个问题.。

PBS作业调度系统

PBS作业调度系统
机群松散的结构的整合
❖ 系统资源整合
异构系统的整合
❖ 多用户的管理
用户提交的任务的统一安排,避免冲突
❖ 用户权限的管理
非授权用户的控制
作业调度系统的简史
作业调度系统的分类
❖ 基于进程级别的调度
由机群中的操作系统或者运行时Runtime内部支持, 对运行的作业进行监控;以实现机群内的透明调度、 以及自动优化进程的分配和平衡负载
PBS 的基本原理
PBS 的优缺点
✓ 符合POSIX 1003.2d 标准 ✓ 支持系统级检查点功能
(需底层操作系统支持)
✓ 很好的大规模扩展性 ✓ 独立的调度模块 ✓ 支持作业依赖和用户映射
➢ 只支持Unix类操作系统 ➢ 多集群协作功能有限 ➢ 不支持用户级检查点功能
术语
❖ 节点(node)
❖ 编译设置
[root@node1 tmp]#./configure --set-server_home=/var/spool/pbs --enabledocs --enable-syslog
默认情况下,TORQUE将可执行文件安装在/usr/local/bin和/usr/local/sbin下。 其余的配置文件将安装在/var/spool/torque下
一个单一的操作系统映像,一个统一的虚拟内存映像一个个或多 个cpu,一个或多个IP地址的计算机系统被称之为一个节点。通常 执行主机(execution host)也被称之为节点。
❖ 节点属性
队列、服务器和节点都有与自己相关的属性,这些属性提供控制 信息。与节点相关的属性有:状态、类型、虚拟处理器的个数、 作业列表(本节点被分配给的作业)以及节点的特性。……
服务进程配置和启动文件

资源管理软件TORQUE 与作业调度软件Maui 的安装、设置及使用

资源管理软件TORQUE 与作业调度软件Maui 的安装、设置及使用

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用李会民(hmli@)中国科学技术大学网络信息中心2008年1月目录1资源管理软件TORQUE的安装与设置21.1服务节点安装TORQUE (2)1.2服务节点初始化并设置TORQUE (2)1.3计算节点上安装TORQUE (4)1.4计算节点配置TORQUE (4)2安装与配置作业调度软件:Maui52.1服务节点上安装Maui (5)2.2服务节点上配置Maui (5)3作业运行63.1串行作业 (7)3.2并行作业 (8)3.3常用作业管理命令 (8)3.3.1查看队列中的作业状态:qstat (9)3.3.2挂起作业:qhold (10)3.3.3取消挂起:qrls (10)3.3.4终止作业:qdel和canceljob (10)3.3.5查看作业状态:checkjob (11)3.3.6交换两个作业的排队顺序:qorder (12)3.3.7选择符合特定条件的作业的作业号:qselect (12)3.3.8显示队列中作业的信息:showq (13)3.3.9显示节点信息:pbsnodes和qnodes (13)1资源管理软件TORQUE的安装与设置TORQUE和Maui可以从上下载。

以下仅是粗略配置,详细配置请参考相关手册:•TORQUE:/torquedocs21/•Maui:/products/maui/docs/mauiusers.shtml1.1服务节点安装TORQUE这里假设服务节点的机子名为kd50,其中一个计算节点的名字为node0101。

root@kd50#tar zxvf torque-2.2.1.tar.gzroot@kd50#cd torque-2.2.1root@kd50#./configure–prefix=/opt/torque-2.2.1–with-rcp=rcp上面–with-rcp=rcp设置为利用rsh协议在节点间传输文件,也可设置为–with-rcp=scp以利用scp协议进行传输。

MAUI实验指导书

MAUI实验指导书

MAUI实验指导书1.MAUI简介Maui是一个高级的作业调度器,它采用积极的调度策略优化资源的利用和减少作业的响应时间。

Maui的资源和伏在管理允许高级的参数配置:作业优先级(Job Priority)、调度和分配(Scheduling and Allocation)、公平性和公平共享(Fairness and Fairshare)、预留策略(Reservation Policy)。

Maui的QoS机制允许资源和服务的直接传递、策略解除(Policy Exemption)和指定特征的受限访问。

Maui采用高级的资源预留架构可以保证精确控制资源何时、何地、被谁、怎样使用。

Maui的预留架构完全支持非入侵式的元调度。

在集群系统中,作业管理系统是很重要的一个部分。

好的作业管理系统能够公平、合理地分配计算资源,杜绝资源浪费。

在小型的集群系统中,人们一般用Torque PBS作为作业管理系统,它本身自带一个管理工具——pbs_sched,该管理工具能够根据先进先出的原则安排作业,对一般的集群管理应该是足够了。

但如果集群有几十个节点,分成若干个队列,则pbs_sched就力不从心了。

为此,Torque推出了一个免费的管理软件maui,它能够实现多个队列、多个用户的作业管理,允许管理人员建立各种作业排队的规则,是一款很好的小型集群系统作业管理软件。

2.安装MAUI下面是它的安装简介,前提是先安装调试好Torque PBS 后,用maui替代pbs_sched。

①在管理节点上安装maui。

# /home/tgz/torque/maui-3.2.6p21/configure --with-pbs=usr/local# make# make install②修改ui的守护程序,并修改MAUI_PRFIX指定maui 所在路径。

# cp /home/tgztorque-3.2.6p21 /etc/maui.d /etc/init.d/# vi /etc/init.d/maui.dMAUI_PREFIX=/usr/local/maui③启动maui的守护程序。

GPU集群Torque排队系统使用手册

GPU集群Torque排队系统使用手册

多媒体计算与通讯实验室GPU集群Torque排队系统使用手册袁平波 2016.5.20本实验室新购进24块K80 tesla GPU。

为了充分利用GPU计算资源,我们利用Torque来管理同学们的计算任务队列。

头结点的IP是192.168.17.240。

下面说明使用本GPU集群的几个步骤。

1.申请帐号.本集群有一个头结点和多个服务结点构成,因此提交计算作业需要在头结点上拥有帐号,需要使用集群的学生需要给我发一个申请邮件,同时cc给自己的导师,在导师批准后相应的帐号会被建立。

2.建立job脚本文件Torque管理系统不能直接提交二进制可执行文件,需要编写一个文本的脚本文件,来描述相关参数情况。

一个示例脚本文件myjob1.pbs如下:#PBS -N myjob1#PBS -o /home/username/myjob1.out#PBS -e /home/username/myjob1.err#PBS -l nodes=1:gpus=1:S#PBS -r ycd $PBS_O_WORKDIRecho Time is `date`echo Directory is $PWDecho This job runs on following nodes:cat $PBS_NODEFILEcat $PBS_GPUFILE./my_proc脚本文件中定义的参数默认是以#PBS开头的。

其中:-N 定义的是job名称,可以随意。

-o 定义程序运行的标准输出文件,如程序中printf打印信息,相当于stdout;-e 定义程序运行时的错误输出文件,相当于stderr。

-l 定义了申请的结点数和gpus数量。

nodes=1代表一个结点,一般申请一个结点,除非采用mpi并行作业;gpus=1定义了申请的GPU数量,根据应用实际使用的gpu数量来确定,S表示job类型,后面有详细描述。

队列系统的默认job请求时间是一周,如果运行的job时间估计会超过,则可以使用下面的参数:#PBS -l nodes=1:gpus=1:S,walltime=300:00:00表示请求300小时的job时间。

queue 常见实现 及 方法

queue 常见实现 及 方法

queue 常见实现及方法queue是一种常见的数据结构,它是一种先进先出(First-In-First-Out,简称FIFO)的数据结构,常用于存储和管理多个元素。

在程序设计中,队列的实现可以有多种方法,下面将介绍两种常见的队列实现方法以及它们的方法。

一、数组实现队列数组是一种线性表结构,使用数组来实现队列是一种简单而常见的方法。

数组实现队列的关键是要确定队头和队尾的位置。

我们可以使用两个指针front和rear来指示队头和队尾的位置。

队头指针front指向队列的第一个元素,队尾指针rear指向队列的最后一个元素。

初始时,队头和队尾指针都指向-1,表示队列为空。

1. 入队操作(enqueue):当需要入队一个元素时,我们先判断队列是否已满,即判断rear 是否指向了队列的最后一个位置。

如果队列已满,则无法入队;否则,将元素插入到rear指向的位置,并将rear指针向后移动一位。

2. 出队操作(dequeue):当需要出队一个元素时,我们先判断队列是否为空,即判断front 和rear是否相等。

如果队列为空,则无法出队;否则,将队头元素取出,并将front指针向后移动一位。

3. 判断队列是否为空:当队头和队尾指针相等时,表示队列为空。

4. 判断队列是否已满:当rear指针指向了队列的最后一个位置时,表示队列已满。

二、链表实现队列链表是一种非连续的数据结构,使用链表来实现队列也是一种常见的方法。

链表实现队列的关键是要维护一个指向队头和队尾的指针。

我们可以使用两个指针head和tail来指示队头和队尾的位置。

初始时,head和tail都指向空。

1. 入队操作(enqueue):当需要入队一个元素时,我们先创建一个新的节点,并将元素存储在节点中。

然后,将新节点链接到链表的尾部,并将tail指针指向新节点。

2. 出队操作(dequeue):当需要出队一个元素时,我们先判断队列是否为空,即判断head 和tail是否都指向空。

PBS队列使用与指导

PBS队列使用与指导
1.13 resources_available
限定一个 queue 中所有任务可用的所有资源 进行该设置之后,必须重启 pbs_server 才能生效;同时它还受到 queue.resources_available 和 server.resources_available 的限制 qmgr -c "set queue batch resources_available.nodect=20"
1.14 resources_default
指明提交到该 queue 的 jobs 的默认的资源限制 qmgr -c "set queue batch resources_default.walltime=24:00:00"
1.15 resources_max
指明提交到该 queue 中的 jobs 的最大资源限制 qmgr -c "set queue batch resources_max.nodect=16"
1.16 resources_min
提交到该 queue 的 jobs 的最小资源限制 qmgr -c "set queue batch resources_min.nodect=2"
route_destinations
指明提交到相关的 routing queue 的 jobs 最终的 destination queues qmgr -c "set queue route route_destinations=fast" qmgr -c "set queue route route_destinations+=slow" qmgr -c "set queue route route_destinations+=medium@hostname"

集群资源管理器Torque安装配置

集群资源管理器Torque安装配置

集群资源管理器Torque安装配置集群资源管理器T orque安装配置Torque有三个重要的可执行文件,运行在主节点上的pbs_server 和pbs_sched(对于比较简单的情况,这里使用这个Torque自带的调度器)及运行在计算节点上的pbs_mom,提交任务前要先启动这三个服务。

为方便阅读,命令及在需要编辑文件的内容以兰色字体显示。

如果没有说明路径,操作(如cp)是在/root/software/torque-2.5.4进行的。

1.编译安装1.1 解压源文件包假设解压的文件放在/root/software# cd /root/software# tar -xvf torque-2.5.4.tar.gz1.2 编译配置# cd torque-2.5.4#./configure --enable-docs --with-scp --enable-syslog --with-default-server=xxx(headnode-name)其中,默认情况下,TORQUE将可执行文件安装在/usr/local/bin 和/usr/local/sbin下。

其余的配置文件将安装在/var/spool/torque下(其实直接./configure应该也可以)。

1.3 编译安装# make# make install2.参数设置2.1在Server端设置队列管理员在torque的安装源文件根目录中,执行#./torque.setup root上面的命令以root作为torque的管理员账号创建作业队列,也可以指定其它的用户作管理员。

如果此处添加失败,有可能是机器用户名不对,执行这步之前要确认用户名,如果出现BS_Server: LOG_ERROR::pbsd_main, unable to determine local server hostname - gethostbyname(pbsmaster.localdomain) failed, h_errno=1解决方法:add a line in /etc/host:192.168.1.101 pbsmaster pbsmaster.localdomain2.2 Server端资源管理配置(指定计算节点)为了让pbs_server与每个计算节点进行通信,它需要知道要和那些机器联络,集群中的每个计算节点都必须在nodes 文件中指定,一行一个节点,对于只有一个节点的情况只用增加一行就行。

linux内核中的workqueue_和work_使用方法__示例及解释说明

linux内核中的workqueue_和work_使用方法__示例及解释说明

linux内核中的workqueue 和work 使用方法示例及解释说明1. 引言1.1 概述Linux内核是操作系统的核心,工作队列(workqueue)和work是其重要的组成部分。

工作队列提供了一种异步机制,用于处理长时间运行的任务或者需要在后台执行的任务。

而work则是具体的任务对象,通过将任务封装为work对象,可以方便地在工作队列中进行调度和管理。

1.2 文章结构本文将详细介绍Linux内核中的工作队列(workqueue)和work的使用方法,并通过示例和解释说明来展示其具体应用。

文章分为五个部分:引言、Workqueue和Work基础知识、Workqueue使用方法、Work使用方法和示例说明以及结论与展望。

1.3 目的本文旨在帮助读者全面了解Linux内核中工作队列和work的概念以及它们的使用方法。

通过深入解析其原理和实践案例,读者可以掌握如何利用工作队列和work来进行高效地后台任务处理,并为未来的研究和应用提供思路和参考。

2. Workqueue和Work基础知识:2.1 Workqueue介绍:Workqueue是Linux内核中的一种机制,用于管理和执行工作任务。

它是一种异步处理的机制,可以在后台处理一些耗时的操作,而不会阻塞系统或其他任务的执行。

2.2 Work介绍:Work是由Workqueue管理的工作任务。

每个Work代表一个需要在后台执行的具体工作。

一个Work可以被认为是一段代码,在特定条件或事件发生时被调用执行。

2.3 Work之间的关系:Workqueue可以创建和管理多个Work任务。

当某个条件满足时,例如硬件中断发生或定时器超时,Workqueue会从任务队列中选择一个可用的Work,并将其分配给空闲的内核线程来运行,以完成相应的工作。

在这个过程中,多个Work之间不存在直接依赖关系。

每个Work都是独立地被分配、执行和管理。

它们并行运行,并且不需要等待其他Work的完成。

torque qsub参数

torque qsub参数

qsub是TORQUE 资源管理系统中用于提交作业的命令。

使用qsub可以将作业提交到队列中,以便在集群的节点上执行。

以下是一些常用的qsub参数:
1.-N name:为作业指定一个名字,这个名字会在队列和作业日志中使用。

2.-l resource_list:指定资源请求,其中resource_list可以是nodes=N:ppn=P(请求N 个节点,每个节点有P 个处理器),walltime=HH:MM:SS
(最大运行时间),mem=X(内存需求,单位通常为MB 或GB)等。

3.-o output_file:将作业的标准输出重定向到output_file文件。

4.-e error_file:将作业的错误输出重定向到error_file文件。

5.-q queue_name:指定提交作业的队列名称。

6.-v variable_list:导出环境变量到作业的环境中。

例如,-v VAR1=value1,VAR2=value2会将VAR1和VAR2环境变量及其对应的值传递给作业。

7.-cwd:在作业中使用当前工作目录作为工作目录。

8.-j join:控制作业的标准输出和错误输出。

例如,-j oe会将标准输出和错误输出合并到一个文件中。

请注意,具体的参数和用法可能会因TORQUE 版本和配置的不同而有所差异。

建议查阅TORQUE 的官方文档或运行qsub -h命令来获取更详细和准确的参数信息。

作业提交系统Torque个人安装

作业提交系统Torque个人安装

PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。

PBS的目前包括openPBS,PBS Pro和T orque三个主要分支。

其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发,PBS pro 是PBS的商业版本,功能最为丰富。

T orque是Clustering公司接过了OpenPBS,并给与后续支持的一个开源版本。

下面是本人安装torque的过程。

一、Torque安装在master(管理结点上)1、解压安装包[root@master tmp]# tar zxvf torque-2.3.0.tar.gz2、进入到解压后的文件夹./configure --with-default-server=mastermakemake install3、(1)[root@master torque-2.3.0]#./torque.setup <user><user>必须是个普通用户(2)[root@master torque-2.3.0]#make packages把产生的 tpackages , torque-package-clients-linux-x86-64.sh,torque-package-mom-linux-x86-64.sh 拷贝到所有节点。

(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(需要自己建立)加入如下内容master np=4node01 np=4........node09 np=4(5)启动pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local里使其能开机自启动。

torque创建队列

torque创建队列

Torque创建队列安装完torque后默认只有一个batch队列,所有节点都属于batch队列有些情况下客户需要创建不同队列,来限制节点资源的使用以一个18节点的集群为例创建一个short队列,队列节点资源限制在node11,node12,node13,node14此4台机器1,创建队列[root@m1 server_priv]# qmgr -c "create queue short queue_type=execution"2,定义队列必须属性[root@m1 server_priv]# qmgr -c "set queue short enabled = True"[root@m1 server_priv]# qmgr -c "set queue short started = True"3,指定可用节点资源修改/usr/local/inspur/server_priv/nodes文件如下node1 np=12node2 np=12node3 np=12node4 np=12node5 np=12node6 np=12node7 np=12node8 np=12node9 np=12node10 np=12node11 np=12 shortnode12 np=12 shortnode13 np=12 shortnode14 np=12 shortnode15 np=12node16 np=12node17 np=12node18 np=12执行命令[root@m1 server_priv]# qmgr -c "set queue short =short"要使操作生效需要重启pbs_server先停掉pbs_server[root@m1 server_priv]# qterm -t quick再启动pbs_server[root@m1 server_priv]# pbs_server4,测试队列,向队列里提交作业[inspur@m1 wtk]$ qsub -q short查看状态[inspur@m1 wtk]$ watch qstat -nEvery : qstat -n Wed Jun 22 15:38:54 2011m1:Req'd Req'd ElapJob ID Username Queue Jobname SessID NDS TSKMemory Time S Time-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----inspur short hello 2531 4 -- -- 12:00 R --node14/1+node14/0+node13/1+node13/0+node12/1+node12/0+node11/1+node11/05,删除队列用以下命令删除[root@m1 server_priv]# qmgr -c "del queue short"对于队列其他资源限制,可以参考手册,以下也列出一些队列最大作业数量(包含运行的和排队的):qmgr -c "set queue short max_queuable=20"队列最大运行作业数量(不包含排队的):qmgr -c "set queue short max_running=20"一个用户最大作业数量qmgr -c "set queue short max_user_queuable=20"一个用户最大运行作业数量(不包含排队的):qmgr -c "set queue short max_user_run=10"一个用户单个作业最大使用cpu核心数量(不包含排队的):set queue long = 2指定队列的优先级:qmgr -c "set queue short priority=20"指定队列中所有作业可用的最大计算节点数量:qmgr -c "set queue short =20"指定队列中单个提交的作业的最大计算节点数量:qmgr -c "set queue short =16"允许提交作业的机器qmgr -c "set queue batch acl_hosts=h1+h2+h3" qmgr -c "set queue batch acl_host_enable=true"set server acl_hosts = snset server acl_hosts += jnset server acl_hosts += mnset server acl_roots = rootset server managers = root@mnset server operators = daihj@*set server operators += inspur@* 让普通用户qsta 查看所有作业set server operators += liqing@*set server operators += root@*set server operators += sunych@*set server operators += zhjx@*set server default_queue = batchset server log_events = 511set server mail_from = admset server scheduler_iteration = 600set server node_check_rate = 150set server tcp_timeout = 6set server keep_completed = 30set server submit_hosts = mnset server submit_hosts += jnset server submit_hosts += snset server auto_node_np = Trueset server next_job_number = 458mqmgr -c "set server operators -= zhangyun@*" 减去一个属性。

作业调度系统PBS(Torque)的设置

作业调度系统PBS(Torque)的设置

作业调度系统PBS(Torque)的设置1、修改/var/spool/torque/server_priv/⽬录下的nodes⽂件##Node1 np=16 gpus=4Node2 np=16 gpus=4...其中Node1为计算节点名字,np为逻辑核数,gpus为显卡数该⽂件给出了计算集群的最⼤可⽤资源2、重新启动pbs##\#service pbs_mon restart\#service pbs_server restart\#service pbs_sched restart注意要按照顺序重启服务3、 qmgr 是Torque⽤户对队列进⾏管理的交互界⾯##在root账户下进⼊qmgr\#qmgrQmgr:list queue QueueName //查看队列属性Queue QueueNamequeue_type = Executionmax_user_queuable = 100total_jobs = 0state_count = Transit:0 Queued:4 Held:0 Waiting:0 Running:1 Exiting:0 Complete:0resources_max.ncpus = 12resources_default.ncpus = 12resources_default.nodes = 1resources_default.walltime = 01:00:00mtime = Tue Jan 30 16:14:38 2018resources_assigned.ncpus = 4resources_assigned.nodect = 1max_user_run = 1enabled = Truestarted = True如要启⽤队列Qmgr:set queue QueueName enabled=True相应的设置项在中给出max_user_queuable :队列中⼀个⽤户能提交的最⼤作业数max_user_run :队列中⼀个⽤户同时运⾏的作业数resources_max.ncpus :最⼤可⽤逻辑核数total_jobs :当前提交的作业数如果要求⼀次执⾏⼀个任务,该任务占⽤12个核,其余任务需要排队,则设置max_user_run=1.然后在作业提交脚本.pbs中 -np 12qmgr不需要重新启动pbs服务4、如何将pbs_mom, pbs_server 和 pbs_sched ,并添加为系统服务,设置为开机启动##cd /usr/local/src/torque-2.5.12/contrib/init.d/cp pbs_mom pbs_server pbs_sched /etc/init.d/chkconfig --add pbs_momchkconfig --add pbs_serverchkconfig --add pbs_sched。

stm32嵌入式开发中队列的使用方法

stm32嵌入式开发中队列的使用方法

stm32嵌入式开发中队列的使用方法在STM32嵌入式开发中,队列是一种非常常用的数据结构,用于实现任务之间的异步通信。

它是一种先进先出(FIFO)的数据结构,在任务之间传递数据和消息时非常有效。

下面是队列的使用方法。

首先,要使用队列,我们需要包含相应的头文件。

在STM32开发中,一般会使用FreeRTOS操作系统,因此我们需要包含FreeRTOS提供的队列头文件:"queue.h"。

接下来,我们需要创建一个队列。

可以使用xQueueCreate函数创建队列,需要指定队列的长度和每个元素的大小。

例如,如果要创建一个能够存储5个32位整数的队列,可以使用以下代码:```cQueueHandle_t queue = xQueueCreate(5, sizeof(uint32_t));```在创建队列之后,我们可以使用xQueueSend函数向队列发送数据。

该函数接受一个队列句柄、要发送的数据和等待时间作为参数。

如果队列已满,发送数据的任务将会等待,直到队列有足够的空间。

例如,以下代码将会把一个值为10的整数发送到队列中:```cuint32_t data = 10;if (xQueueSend(queue, &data, portMAX_DELAY) != pdPASS) {// 队列发送失败的处理}```接收队列中的数据可以使用xQueueReceive函数。

该函数接受一个队列句柄、一个接收数据的指针和等待时间作为参数。

如果队列为空,接收数据的任务将会等待,直到队列中有数据可用。

例如,以下代码将会从队列中接收一个数据并存储在变量result中:```cuint32_t result;if (xQueueReceive(queue, &result, portMAX_DELAY) != pdPASS) {// 队列接收失败的处理}```最后,当不再需要使用队列时,我们需要删除它以释放内存。

torque使用指南

torque使用指南

torque使用指南tip1:bydefault,jobsubmissionisallowedonlyonthetorqueserverhost(hostonwhichpbs_ serverisrunning).enablementofjobsubmissionfromotherhostsisdocumentedinconfigur ingjobsubmithosts.masternode:node3submitajob:qsub查询作业状态:qstat/qstatcf查询节点状态:pbsnodesca第一步:安装yuminstalltorque*安装之后的路径:/var/torque第二步:布局布局掌控节点:1.执行/usr/share/doc/torque-2.5.7/torque.setup,将本节点配置为管理节点。

命令:./torque.setup(选定一个非root用户名)qmgr-c'ps'//查阅布局信息2.具体内容选定排序节点在目录torque_home/server_priv/nodes建立文件nodes,具体指定集群中的计算节点。

简单示例如下:#nodes001and003-005areclusternodes#node001np=2cluster01racknumber22##node002willbereplacedsoonnode002:tswaitingtobereplaced#node002willbereplaceds oon#node003np=4cluster01racknumber24node004cluster01racknumber25node005np=2cluster01racknumber26ram16gbnode006node007np=2node008:tsnp=4布局排序节点:在计算节点的torque_home/mom_priv/config文件中修改$pbsserverheadnode#note:hostnamerunningpbs_server$logevent255#bitmapofwhicheve ntstologpbsserver为你的集群中的管理节点的hostname.3.重启节点排序节点:pbs_mom控制节点:>qterm-tquick>pbs_server注意事项:1.在torque中在继续执行mpi程序时。

浪潮HPC集群作业调度系统使用培训

浪潮HPC集群作业调度系统使用培训
熟悉Torque提供的几个命令 编写作业提交脚本 了解使用注意事项
PBS命令
qsub 作业提交脚本 qstat [参数] qdel 作业号
Inspur group 2017/04/1110集群作业调度统使用方法PBS命令详解
提交作业的命令 qsub 作业提交脚本 此命令执行后,会给出个作业号 查询作业命令 qstat [参数]
13
集群作业调度系统使用方法
PBS命令详解
作业删除命令 qdel 作业号 其中作业号为qsub提交后系统所给出的一个号码
注意事项
1、非管理员只能删除自己提交的作业 2、在提交作业时估计自己需要运行的时间把其写进作业提交脚 本里。 3、Maui里的策略一但制定了,对于作业的优先级,普通用户是 不可见且不可调的。
Inspur group 2017/04/11
14
PBS脚本写作
脚本包含三部分:
资源声明:即规定所需要的节点数,核数,作业名,所要递交的队列
环境变量:即运行作业时,需要的各个节点的基本属性,比如某些软件的路径等
可执行程序:即需要通过MPI来运行的并行程序
如下例子说明
脚本声明部分:
#PBS -N vasp
Inspur group 2017/04/11
8
集群作业调度系统说明
Maui是Cluestering公司为了弥补torque自带的调度器 pbs_shced的调度策略而开发了一款调度器软件 。 Maui优先级系统
Inspur group 2017/04/11
9
集群作业调度系统使用方法
Torque应该如何使用?
PBS历史:
Inspur group 2017/04/11
5

Torque说明文档

Torque说明文档

Torque 3.0使用指南原文地址:/mandy/articles/1982.htmlTorque 3.0使用指南 (1)原文地址: (1)1 使用简明流程 (5)1.1 从已经存在的数据库生成schema XML文件 (5)1.1.1 编辑build.properties (5)1.2 根据schema XML文件生成java object model模型源代码 51.3 在项目中整合torque (5)1.3.1 编辑Torque.properties (5)1.3.2 在项目的初始化代码中添加一下代码: (6)1.4 增加新表 (6)1.4.1 备份shx3-schema.xml (6)1.4.2 ant –f build-torque.xml jdbc (6)1.4.3 将新的表的XML文本块粘贴到备份的shx3-schema.xml (6)1.4.4 备份src/java/* (7)1.4.5 ant –f build-torque.xml om (7)1.4.6 将新的表对应的java文件添加到项目中。

(7)1.5 删除旧表 (7)1.5.1 删除表 (7)1.5.2 删除项目中该表相关联的java源代码 (7)1.6 修改数据库表结构 (7)1.6.1 (7)注意如果修改的表对应的java文件有添加了自定义的方法,含有该方法的java文件需要事先备份。

待增加新表操作完成后,再将这些java文件复制过来,覆盖生成的文件。

其实,torque在生成java文件时,不会覆盖从base基类继承来的类。

所以,在保证安全的情况下,可以直接在修改的package上直接生成java代码。

(7)1.6.2 先执行删除旧表,然后执行增加新表 (7)1.7 包管理及缺省基类 (7)2 torque结构说明 (9)3 编码 (10)3.1 在生成的java源码中添加自定义方法 (10)3.2 初始化 (10)3.3 ID生成器的使用 (10)3.4 INSERT (10)3.5 SELECT (11)3.6 UPDATE (11)3.7 DELETE (12)3.8 简单查询 (12)3.9 复杂查询 (12)3.10 关联查询 (13)3.11 DISTINCT (13)3.12 排序 (14)3.13 GROUP BY AND DISTINCT (14)3.14 条件查询 (15)3.15 自定义查询条件 (15)3.16 在查询中使用两次同一字段 (16)3.17 翻页 (16)3.18 事务处理 (17)4、模板文件 (18)4.1 Torque.properties (23)1 使用简明流程1.1 从已经存在的数据库生成schema XML文件1.1.1 编辑build.propertiestorque.project = shx3torque.database = oracletorque.targetPackage = net.emedchina.omtorque.database.createUrl = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.buildUrl = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.url = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.driver = oracle.jdbc.OracleDriverer = shx3torque.database.password = shx3torque.database.host = 172.25.3.201# 下面一行至关重要torque.database.schema = SHX31.1.1.1ant –f build-torque.xml jdbc1.1.1.2生成:schema/shx3-schema.xml,该文件用于生成模型源代码。

zmq poller用法

zmq poller用法

zmq poller用法ZMQ(ZeroMQ)是一款高性能的消息队列中间件,而zmq poller 是它的一个重要组件。

poller可以同时监控多个socket,当有数据可读或可写时,会自动通知相应的socket进行处理。

这种机制避免了不必要的循环轮询,提高了系统的性能。

下面是zmq poller的用法指南:1. 创建一个poller对象创建一个poller对象需要用到zmq.poll()函数。

这个函数会返回一个poller对象,可以用来监控多个socket。

```pythonimport zmqpoller = zmq.Poller()```2. 注册socket到poller中将需要监控的socket注册到poller中,可以使用poller对象的register()方法。

这个方法有两个参数,第一个是socket对象,第二个是事件类型(zmq.POLLIN或zmq.POLLOUT)。

```pythonsocket1 = context.socket(zmq.REP)socket1.bind('tcp://*:5555')poller.register(socket1, zmq.POLLIN)socket2 = context.socket(zmq.REQ)socket2.connect('tcp://localhost:5556')poller.register(socket2, zmq.POLLOUT)```3. 轮询监控socket使用poller对象的poll()方法可以轮询监控所有注册的socket。

这个方法有一个参数timeout,表示轮询的超时时间(单位毫秒)。

如果timeout为0,表示轮询一次就返回。

```pythonwhile True:socks = dict(poller.poll(1000))if socket1 in socks and socks[socket1] == zmq.POLLIN:print('received message from socket1')message = socket1.recv()socket1.send(b'ack')if socket2 in socks and socks[socket2] == zmq.POLLOUT:print('sending message to socket2')socket2.send(b'hello')message = socket2.recv()```4. 取消socket的注册如果不需要监控某个socket了,可以使用poller对象的unregister()方法将其从poller中注销。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Torque创建队列
安装完torque后默认只有一个batch队列,所有节点都属于batch队列
有些情况下客户需要创建不同队列,来限制节点资源的使用
以一个18节点的集群为例
创建一个short队列,队列节点资源限制在node11,node12,node13,node14此4台机器
1,创建队列
[root@m1 server_priv]# qmgr -c "create queue short queue_type=execution"
2,定义队列必须属性
[root@m1 server_priv]# qmgr -c "set queue short enabled = True"
[root@m1 server_priv]# qmgr -c "set queue short started = True"
3,指定可用节点资源
修改/usr/local/inspur/server_priv/nodes文件如下
node1 np=12
node2 np=12
node3 np=12
node4 np=12
node5 np=12
node6 np=12
node7 np=12
node8 np=12
node9 np=12
node10 np=12
node11 np=12 short
node12 np=12 short
node13 np=12 short
node14 np=12 short
node15 np=12
node16 np=12
node17 np=12
node18 np=12
执行命令
[root@m1 server_priv]# qmgr -c "set queue short resources_default.neednodes=short"
要使操作生效需要重启pbs_server
先停掉pbs_server
[root@m1 server_priv]# qterm -t quick
再启动pbs_server
[root@m1 server_priv]# pbs_server
4,测试队列,向队列里提交作业
[inspur@m1 wtk]$ qsub hello.pbs -q short
查看状态
[inspur@m1 wtk]$ watch qstat -n
Every 2.0s: qstat -n Wed Jun 22 15:38:54 2011
m1:
Req'd Req'd Elap
Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time
-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----
21.m1 inspur short hello 2531 4 -- -- 12:00 R --
node14/1+node14/0+node13/1+node13/0+node12/1+node12/0+node11/1+node11/0
5,删除队列
用以下命令删除
[root@m1 server_priv]# qmgr -c "del queue short"
对于队列其他资源限制,可以参考手册,以下也列出一些
队列最大作业数量(包含运行的和排队的):
qmgr -c "set queue short max_queuable=20"
队列最大运行作业数量(不包含排队的):
qmgr -c "set queue short max_running=20"
一个用户最大作业数量
qmgr -c "set queue short max_user_queuable=20"
一个用户最大运行作业数量(不包含排队的):
qmgr -c "set queue short max_user_run=10"
一个用户单个作业最大使用cpu核心数量(不包含排队的):
set queue long resources_max.ncpus = 2
指定队列的优先级:
qmgr -c "set queue short priority=20"
指定队列中所有作业可用的最大计算节点数量:
qmgr -c "set queue short resources_available.nodect=20"
指定队列中单个提交的作业的最大计算节点数量:
qmgr -c "set queue short resources_max.nodect=16"
允许提交作业的机器
qmgr -c "set queue batch acl_hosts=h1+h2+h3"
qmgr -c "set queue batch acl_host_enable=true"
set server acl_hosts = sn
set server acl_hosts += jn
set server acl_hosts += mn
set server acl_roots = root
set server managers = root@mn
set server operators = daihj@*
set server operators += inspur@* 让普通用户qsta 查看所有作业
set server operators += liqing@*
set server operators += root@*
set server operators += sunych@*
set server operators += zhjx@*
set server default_queue = batch
set server log_events = 511
set server mail_from = adm
set server scheduler_iteration = 600
set server node_check_rate = 150
set server tcp_timeout = 6
set server keep_completed = 30
set server submit_hosts = mn
set server submit_hosts += jn
set server submit_hosts += sn
set server auto_node_np = True
set server next_job_number = 458m
qmgr -c "set server operators -= zhangyun@*" 减去一个属性。

相关文档
最新文档