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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1363 - (show 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 #!/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 # 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 exit 0

Properties

Name Value
svn:executable *

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