// // 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. // // // // loadave3.basl: A simple scheduler to run up to 3 jobs if the load average // is less than 2.0 and the job cput is less than 60 seconds. // This is for each of the server hosts it knows about. // // NOTE: This is the same as loadave2.basl but references to queues are removed // by making use of the function "ServerJobsGet()". // // Environment: Many Server / Many CNode // // Configuration file: // $serverhost host1 port1 // $serverhost host2 port2 // ... // $momhost host1 port1 // $momhost host2 port2 // ... // ************************************************************************** // // User-defined Functions // // ************************************************************************** CNode findCNodeByName(String host_name) { Set CNode exec_hosts; CNode n; // get the nodes to the system via the configuration file exec_hosts = AllNodesGet(); foreach( n in exec_hosts ) { if( CNodeNameGet(n) EQ host_name ) { return(n); } } return(NOCNODE); } // ************************************************************************** // // Global variable declarations // // ************************************************************************** Int nrun; // ************************************************************************** // // main scheduling code // // ************************************************************************** sched_main() { Set Server serv_hosts; Server h; CNode node; Set Job jobs; Job j; String host_name; Float loadave; // get all servers known to the system serv_hosts = AllServersGet(); foreach( h in serv_hosts ) { nrun = 0; host_name = ServerInetAddrGet(h); node = findCNodeByName(host_name); if( loadave GE 2.0 OR loadave LT 0.0 ) { continue; } jobs = ServerJobsGet(h); foreach( j in jobs ) { if( JobStateGet(j) NEQ RUNNING AND JobIntResReqGet(j, "cput") LT 60 ) { // run job syncronously if( JobAction(j, SYNCRUN, NULLSTR) EQ SUCCESS ) { nrun=nrun+1; } if( nrun GT 2 ) { break; } } } // foreach jobs } // foreach h }