/[pdpsoft]/trunk/blah-hook/pbs_local_submit_attributes.sh
ViewVC logotype

Annotation of /trunk/blah-hook/pbs_local_submit_attributes.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1363 - (hide annotations) (download) (as text)
Mon Jan 11 14:29:17 2010 UTC (12 years, 5 months ago) by dennisvd
File MIME type: application/x-shellscript
File size: 5182 byte(s)
added cpu time in the same vein as walltime.

1 dennisvd 507 #!/bin/sh
2    
3     # $Id$
4    
5     # The memory and wall time requirements as passed from the job
6     # description file (JDL) need to be passed on to the local batch
7     # system. This script, when installed in /opt/glite/bin, will be
8     # called by BLAH moments before the job is submitted to the Torque
9     # batch system.
10    
11     # The requirements are passed according the tho GLUE schema, and for
12     # the purposes of this script involve the properties
13     # MainMemoryRAMSize, and MaxWallClockTime.
14    
15     # see the GlUE Schema v1.3, http://glueschema.forge.cnaf.infn.it/Spec/V13
16    
17     # See http://grid.pd.infn.it/cream/field.php?n=Main.ForwardOfRequirementsToTheBatchSystem
18    
19     # The requirements will have been translated from their original Glue
20     # form into shell variables; upper and lower bounds are indicated by
21     # appending _Max or _Min, respectively, to the variable name.
22    
23     # Some care must be taken to pass only sensible values, i.e. numbers,
24     # lest we leave opportunity to befoul the submit script with stray
25     # parameters.
26    
27     # The assumption here is, and it will have to be checked, that all
28     # values are specified as integer decimal numbers.
29    
30     # For a treatise on parameter passing to Torque, see
31     # http://www.clusterresources.com/torquedocs21/2.1jobsubmission.shtml#nodeExamples.
32    
33     # Part 1: memory requirements
34     # The parameter to watch for is called MainMemoryRamSize.
35     # this is specified in megabytes according to Glue.
36     memmin="$GlueHostMainMemoryRAMSize_Min"
37    
38     # If the user was so careless to ask for an exact match instead of
39     # a minimum, the variable name is different.
40     if [ -z "$memmin" ]; then
41     memmin="$GlueHostMainMemoryRAMSize"
42     fi
43    
44     # At this point $memmin is either empty, if no requirement was given,
45     # or some string. It must be a number but let's make sure by using
46     # the test below.
47     if [ "$memmin" -gt 0 ]; then
48     echo "#PBS -l mem=${memmin}mb"
49     fi
50    
51     # Part 2: Wall clock time requirement.
52     #
53     # While the memory specification according to the Glue schema is a
54     # property of a Compute Element, the maximum (wall clock) time a job
55     # can spend is set by policy. A curious aspect of the Glue schema is
56     # the subtle difference between the meaning of MaxWallClockTime and
57     # MaxObtainableWallClockTime.
58     #
59     #+--------------------------+-----------------------------+
60     #|property |description |
61     #+--------------------------+-----------------------------+
62     #|MaxWallClockTime |The default maximum wall |
63     #| |clock time allowed to each |
64     #| |job by the batch system if no|
65     #| |limit is requested. Once this|
66     #| |time has expired the job will|
67     #| |most likely be killed or |
68     #| |removed from the queue |
69     #+--------------------------+-----------------------------+
70     #|MaxObtainableWallClockTime|The maximum obtainable wall |
71     #| |clock time that can be |
72     #| |granted to the job upon user |
73     #| |request |
74     #+--------------------------+-----------------------------+
75     #
76    
77     # In the new Glue Schema (2.0) the DefaultWallTime and MaxWallTime
78     # properties have a like relationship.
79    
80     # If for some strange reason the JDL file mentions requirements on both
81     # attributes, let's be prudent and take the maximum of the two.
82    
83     # We take the same approach as before; testing for an exact match as well
84     # as a lower bound.
85     maxwall=0
86     if [ -n "$GlueCEMaxWallClockTime_Min" ]; then
87     maxwall="$GlueCEMaxWallClockTime_Min"
88     elif [ -n "$GlueCEMaxWallClockTime" ] ; then
89     maxwall="$GlueCEMaxWallClockTime"
90     fi
91    
92     maxobtain=0
93     if [ -n "$GlueCEMaxObtainableWallClockTime_Min" ]; then
94     maxobtain="$GlueCEMaxObtainableWallClockTime_Min"
95     elif [ -n "$GlueCEMaxObtainableWallClockTime" ]; then
96     maxobtain="$GlueCEMaxObtainableWallClockTime"
97     fi
98    
99     # Select the larger of the two values; the use of -gt uses
100     # integer parsing so it effectively enforces input sanitation.
101     if [ "$maxobtain" -gt "$maxwall" ]; then
102     walltime="$maxobtain"
103     else
104     walltime="$maxwall"
105     fi
106     if [ "$walltime" -gt 0 ]; then
107     # The time unit, according to the Glue schema, is one minute
108     # but the Torque parameter is in seconds
109     wallsec=$(($walltime*60)) && echo "#PBS -l walltime=${wallsec}"
110     fi
111    
112 dennisvd 1363 # The CPU time gets mostly the same treatment as the wall time.
113    
114     maxcpu=0
115     if [ -n "$GlueCEMaxCPUTime_Min" ]; then
116     maxcpu="$GlueCEMaxCPUTime_Min"
117     elif [ -n "$GlueCEMaxCPUTime" ] ; then
118     maxcpu="$GlueCEMaxCPUTime"
119     fi
120    
121     maxobtaincpu=0
122     if [ -n "$GlueCEMaxObtainableCPUTime_Min" ]; then
123     maxobtaincpu="$GlueCEMaxObtainableCPUTime_Min"
124     elif [ -n "$GlueCEMaxObtainableCPUTime" ]; then
125     maxobtaincpu="$GlueCEMaxObtainableCPUTime"
126     fi
127    
128     # Select the larger of the two values; the use of -gt uses
129     # integer parsing so it effectively enforces input sanitation.
130     if [ "$maxobtaincpu" -gt "$maxcpu" ]; then
131     cputime="$maxobtaincpu"
132     else
133     cputime="$maxcpu"
134     fi
135     if [ "$cputime" -gt 0 ]; then
136     # The time unit, according to the Glue schema, is one minute
137     # but the Torque parameter is in seconds
138     cpusec=$(($cputime*60)) && echo "#PBS -l cput=${cpusec}"
139     fi
140    
141 dennisvd 507 exit 0

Properties

Name Value
svn:executable *

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28