⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 af.basl

📁 openPBS的开放源代码
💻 BASL
📖 第 1 页 / 共 4 页
字号:
////         OpenPBS (Portable Batch System) v2.3 Software License// // Copyright (c) 1999-2000 Veridian Information Solutions, Inc.// All rights reserved.// // ---------------------------------------------------------------------------// For a license to use or redistribute the OpenPBS software under conditions// other than those described below, or to purchase support for this software,// please contact Veridian Systems, PBS Products Department ("Licensor") at:// //    www.OpenPBS.org  +1 650 967-4675                  sales@OpenPBS.org//                        877 902-4PBS (US toll-free)// ---------------------------------------------------------------------------// // This license covers use of the OpenPBS v2.3 software (the "Software") at// your site or location, and, for certain users, redistribution of the// Software to other sites and locations.  Use and redistribution of// OpenPBS v2.3 in source and binary forms, with or without modification,// are permitted provided that all of the following conditions are met.// After December 31, 2001, only conditions 3-6 must be met:// // 1. Commercial and/or non-commercial use of the Software is permitted//    provided a current software registration is on file at www.OpenPBS.org.//    If use of this software contributes to a publication, product, or//    service, proper attribution must be given; see www.OpenPBS.org/credit.html// // 2. Redistribution in any form is only permitted for non-commercial,//    non-profit purposes.  There can be no charge for the Software or any//    software incorporating the Software.  Further, there can be no//    expectation of revenue generated as a consequence of redistributing//    the Software.// // 3. Any Redistribution of source code must retain the above copyright notice//    and the acknowledgment contained in paragraph 6, this list of conditions//    and the disclaimer contained in paragraph 7.// // 4. Any Redistribution in binary form must reproduce the above copyright//    notice and the acknowledgment contained in paragraph 6, this list of//    conditions and the disclaimer contained in paragraph 7 in the//    documentation and/or other materials provided with the distribution.// // 5. Redistributions in any form must be accompanied by information on how to//    obtain complete source code for the OpenPBS software and any//    modifications and/or additions to the OpenPBS software.  The source code//    must either be included in the distribution or be available for no more//    than the cost of distribution plus a nominal fee, and all modifications//    and additions to the Software must be freely redistributable by any party//    (including Licensor) without restriction.// // 6. All advertising materials mentioning features or use of the Software must//    display the following acknowledgment:// //     "This product includes software developed by NASA Ames Research Center,//     Lawrence Livermore National Laboratory, and Veridian Information//     Solutions, Inc.//     Visit www.OpenPBS.org for OpenPBS software support,//     products, and information."// // 7. DISCLAIMER OF WARRANTY// // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT// ARE EXPRESSLY DISCLAIMED.// // IN NO EVENT SHALL VERIDIAN CORPORATION, ITS AFFILIATED COMPANIES, OR THE// U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT,// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.// // This license will be governed by the laws of the Commonwealth of Virginia,// without reference to its choice of law rules.// ////// af.basl: This scheduler does nothing useful to jobs except perform a // 	    regression test on BASL features. It will actually run one job on// 	    every iteration. This code provides useful examples on how to call//          the BASL assist/predefined functions.//// Environment: 2 Servers / 2 CNodes//// NOTE: Once this has been compiled from BASL code to C (using basl2c), and//	 then from C code to executable, then the scheduler is invoked as//	 follows:////		pbs_sched -c config_file////	 where 'config_file' would contain something like://       --------//	 # The list of clients that can contact the scheduler//	 $clienthost db//	 $serverhost db 0//	 # The list of Moms to contact//	 $momhost ruby 0//	 $momhost db 0////	 # Various resources to be used according to mach_type//	 # wildcarded entry//	 $node * CNodeVendorGet                          vendor//	 $node * CNodeNumCpusGet                         cpus////	 $node * CNodeMemTotalGet[real]                  rtot//	 $node * CNodeMemTotalGet[virtual]               vtot//	 $node * CNodeMemAvailGet[real]                  ravail//	 $node * CNodeMemAvailGet[virtual]               vavail////	 $node * CNodeCpuPercentIdleGet                  idle//	 $node * CNodeCpuPercentSysGet                   sys//	 $node * CNodeCpuPercentUserGet                  user//	 $node * CNodeCpuPercentGuestGet                 guest////	 $node * CNodeNetworkBwGet[hippi]                hippibw////	 $node * CNodeSwapSpaceTotalGet[primary]         swaptot//	 $node * CNodeSwapSpaceAvailGet[primary]         swapavail//	 $node * CNodeSwapInBwGet[primary]               swapin//	 $node * CNodeSwapOutBwGet[primary]              swapout////	 $node * CNodeDiskSpaceTotalGet[/tmp]            tmptot//	 $node * CNodeDiskSpaceAvailGet[/tmp]            tmpavail//	 $node * CNodeDiskSpaceReservedGet[/tmp]         tmprsrv//	 $node * CNodeDiskInBwGet[/tmp]                  tmpin//	 $node * CNodeDiskOutBwGet[/tmp]                 tmpout//	 $node * CNodeDiskSpaceTotalGet[/u]              utot//	 $node * CNodeDiskSpaceAvailGet[/u]              uavail//	 $node * CNodeDiskSpaceReservedGet[/u]           ursrv//	 $node * CNodeDiskInBwGet[/u]                    uin//	 $node * CNodeDiskOutBwGet[/u]                   uout//	 $node * CNodeDiskSpaceTotalGet[/u/wk]           hometot//	 $node * CNodeDiskSpaceAvailGet[/u/wk]           homeavail//	 $node * CNodeDiskSpaceReservedGet[/u/wk]        homersrv//	 $node * CNodeDiskInBwGet[/u/wk]                 homein//	 $node * CNodeDiskOutBwGet[/u/wk]                homeout////	 $node * CNodeTapeSpaceTotalGet[4mm]             4mmtot//	 $node * CNodeTapeInBwGet[4mm]                   4mmin//	 $node * CNodeTapeOutBwGet[4mm]                  4mmout//	 $node * CNodeTapeSpaceAvailGet[4mm]             4mmavail//	 $node * CNodeTapeSpaceTotalGet[8mm]             8mmtot//	 $node * CNodeTapeInBwGet[8mm]                   8mmin//	 $node * CNodeTapeOutBwGet[8mm]                  8mmout//	 $node * CNodeTapeSpaceAvailGet[8mm]             8mmavail////	 $node * CNodeSrfsSpaceTotalGet[fast]            fasttot//	 $node * CNodeSrfsInBwGet[fast]                  fastin//	 $node * CNodeSrfsOutBwGet[fast]                 fastout//	 $node * CNodeSrfsSpaceAvailGet[fast]            fastavail//	 $node * CNodeSrfsSpaceReservedGet[fast]         fastrsrv//	 $node * CNodeSrfsSpaceTotalGet[big]             bigtot//	 $node * CNodeSrfsInBwGet[big]                   bigin//	 $node * CNodeSrfsOutBwGet[big]                  bigout//	 $node * CNodeSrfsSpaceAvailGet[big]             bigavail//	 $node * CNodeSrfsSpaceReservedGet[big]          bigrsrv////	 And the resource queries could be statically defined in the//	 configuration file of the participating MOMs.//  	// **************************************************************************//// User-defined Functions//// **************************************************************************Int JobWallTimeReqGet( Job job ) {	Int wallt;	wallt = JobIntResReqGet(job, "walltime");	return(wallt);}Int JobWallTimeUsedGet( Job job ) {	Int wallt;	wallt = JobIntResUseGet(job, "walltime");	return(wallt);}Int JobCpuTimeReqGet( Job job ) {	Int cput;	cput = JobIntResReqGet(job, "cput");	return(cput);}Int JobCpuTimeUsedGet( Job job ) {	Int cput;	cput = JobIntResUseGet(job, "cput");	return(cput);}Size JobVirtualMemAvailGet(Job job){	Size sz;	sz = JobSizeResReqGet(job, "mem");	return(sz);}Void printInt(String name, String fname, String resname, Int i){	String str;	str = fname   + "[" + name + "]" + "." +              resname + "=";	print(str);	print(i);}Void printStr(String name, String fname, String resname, String string){	String str;	str = fname   + "[" + name + "]" + "." +              resname + "=";	print(str);	print(string);}Void printSize(String name, String fname, String resname, Size sz){	String str;	str = fname   + "[" + name + "]" + "." +              resname + "=";	print(str);	print(sz);}Void printDateTime(String name, String fname, String resname, DateTime dt){	String str;	str = fname   + "[" + name + "]" + "." +              resname + "=";	print(str);	print(dt);}Void printFloat(String name, String fname, String resname, Float f){	String str;	str = fname   + "[" + name + "]" + "." +              resname + "=";	print(str);	print(f);}Que findQueByName( Set Que sq, String qname ){	Que q;	foreach(q in sq) {		if( QueNameGet(q) EQ qname ) {			return(q);		}	}	return(NOQUE);}// **************************************************************************//// Global variable declarations//// **************************************************************************String server_name1;String server_name2;String mom_name1;String mom_name2;// **************************************************************************//// Assignment statements to global variables//// **************************************************************************server_name1 = "db";server_name2 = "ruby";mom_name1 = "db";mom_name2 = "ruby";// **************************************************************************//// main scheduling code//// **************************************************************************sched_main(){	Int	i;	Int	k;	CNode   cn;	CNode   cnhead;	Server  s;	Server  shead;	Job	j;	Set CNode  allcns;	Set Server alls;	Set Job	   alljs;	String	headstr;	String	str;	Que	q;	Set Que	allqs; 	Int	ires;	Size	sres;	String	stres;	String  sname;	String  qname;	String  jname;		String  cname;	String  name;	String  hstr;	Float	f;	DateTime dt;	Int	 dtsecs;	Que	 que;	Que	 newq;	Job	 job;	Int	 res;	DateTime d;	Size	 sz;	Set Que  sq;	dt = datetimeGet();	printDateTime(NULLSTR, "datetimeGet", NULLSTR, dt);	dtsecs = datetimeToSecs(dt);	printInt(NULLSTR, "datetimeToSecs", NULLSTR, dtsecs);		alls = AllServersGet();	shead = AllServersLocalHostGet();	k = 1;	foreach(s in alls) {		if( k EQ 1 ) {			if( ServerInetAddrGet(s) EQ ServerInetAddrGet(shead) ) {				printStr(NULLSTR, "AllServersLocalHostGet", NULLSTR,                                                               "passed");			} else {				printStr(NULLSTR, "AllServersLocalHostGet", NULLSTR,                                                               "failed");			}		}		str = ServerInetAddrGet(s) ;		sname = str;		printStr(sname, "ServerInetAddrGet", NULLSTR, str);			str = ServerDefQueGet(s) ;		printStr(sname, "ServerDefQueGet", NULLSTR, str);			i = ServerStateGet(s) ;		switch(i) {	  	case SERVER_ACTIVE:			{				printStr(sname, "ServerStateGet",                                                     NULLSTR, "Active");			}	  	case SERVER_IDLE:			{				printStr(sname, "ServerStateGet",                                                     NULLSTR, "Idle");			}	  	case SERVER_SCHED:			{				printStr(sname, "ServerStateGet",                                                 NULLSTR, "Scheduling");			}	  	case SERVER_TERM:			{				printStr(sname, "ServerStateGet",                                                NULLSTR, "Terminating");			}	  	case SERVER_TERMDELAY:			{				printStr(sname, "ServerStateGet",                                       NULLSTR, "Delayed Termination");			}	 	default:			{				printStr(sname, "ServerStateGet",                                       NULLSTR, "Unknown Server state");			}		}			i = ServerMaxRunJobsGet(s) ;		printInt(sname, "ServerMaxRunJobsGet", NULLSTR, i);									i = ServerMaxRunJobsPerUserGet(s);		printInt(sname, "ServerMaxRunJobsPerUserGet",NULLSTR,i);			i = ServerMaxRunJobsPerGroupGet(s);		printInt(sname, "ServerMaxRunJobsPerGroupGet",NULLSTR,i);		// the Avails		ires = ServerIntResAvailGet(s, "cput");		printInt(sname, "ServerIntResAvailGet", "cput", ires);		ires = ServerIntResAvailGet(s, "pcput");		printInt(sname, "ServerIntResAvailGet", "pcput", ires);		ires = ServerIntResAvailGet(s, "walltime");		printInt(sname, "ServerIntResAvailGet", "walltime", ires);		ires = ServerIntResAvailGet(s, "mppt");		printInt(sname, "ServerIntResAvailGet", "mppt", ires);		ires = ServerIntResAvailGet(s, "pmppt");		printInt(sname, "ServerIntResAvailGet", "pmppt", ires);		ires = ServerIntResAvailGet(s, "nice");		printInt(sname, "ServerIntResAvailGet", "nice", ires);		ires = ServerIntResAvailGet(s, "procs");		printInt(sname, "ServerIntResAvailGet", "procs", ires);		ires = ServerIntResAvailGet(s, "mppe");		printInt(sname, "ServerIntResAvailGet", "mppe", ires);		ires = ServerIntResAvailGet(s, "ncpus");		printInt(sname, "ServerIntResAvailGet", "ncpus", ires);		ires = ServerIntResAvailGet(s, "pncpus");		printInt(sname, "ServerIntResAvailGet", "pncpus", ires);		ires = ServerIntResAvailGet(s, "nodect");		printInt(sname, "ServerIntResAvailGet", "nodect", ires);		ires = ServerIntResAvailGet(s, "srfs_assist");		printInt(sname, "ServerIntResAvailGet", "srfs_assist",								ires);		ires = ServerIntResAvailGet(s, "mta");		printInt(sname, "ServerIntResAvailGet", "mta", ires);		ires = ServerIntResAvailGet(s, "mtb");		printInt(sname, "ServerIntResAvailGet", "mtb", ires);		ires = ServerIntResAvailGet(s, "mtc");		printInt(sname, "ServerIntResAvailGet", "mtc", ires);		ires = ServerIntResAvailGet(s, "mtd");		printInt(sname, "ServerIntResAvailGet", "mtd", ires);		ires = ServerIntResAvailGet(s, "mte");		printInt(sname, "ServerIntResAvailGet", "mte", ires);		ires = ServerIntResAvailGet(s, "mtf");		printInt(sname, "ServerIntResAvailGet", "mtf", ires);		ires = ServerIntResAvailGet(s, "mtg");		printInt(sname, "ServerIntResAvailGet", "mtg", ires);		ires = ServerIntResAvailGet(s, "mth");		printInt(sname, "ServerIntResAvailGet", "mth", ires);		sres = ServerSizeResAvailGet(s, "file");		printSize(sname, "ServerSizeResAvailGet", "file", sres);		sres = ServerSizeResAvailGet(s, "mem");		printSize(sname, "ServerSizeResAvailGet", "mem", sres);		sres = ServerSizeResAvailGet(s, "pmem");		printSize(sname, "ServerSizeResAvailGet", "pmem", sres);		sres = ServerSizeResAvailGet(s, "workingset");		printSize(sname, "ServerSizeResAvailGet", "workingset",                                                                 sres);		sres = ServerSizeResAvailGet(s, "pf");		printSize(sname, "ServerSizeResAvailGet", "pf", sres);		sres = ServerSizeResAvailGet(s, "ppf");		printSize(sname, "ServerSizeResAvailGet", "ppf", sres);		sres = ServerSizeResAvailGet(s, "srfs_tmp");		printSize(sname, "ServerSizeResAvailGet", "srfs_tmp",                                                                sres);		sres = ServerSizeResAvailGet(s, "srfs_wrk");		printSize(sname, "ServerSizeResAvailGet", "srfs_wrk",                                                                sres);		sres = ServerSizeResAvailGet(s, "srfs_big");		printSize(sname, "ServerSizeResAvailGet", "srfs_big",                                                                sres);		sres = ServerSizeResAvailGet(s, "srfs_fast");		printSize(sname, "ServerSizeResAvailGet", "srfs_fast",                                                                sres);		sres = ServerSizeResAvailGet(s, "sds");		printSize(sname, "ServerSizeResAvailGet", "sds",                                                                sres);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -