On 18 Apr 2007 15:03:01 +0100, Angel de Vicente <angelv@xxxxxx> wrote:
Hi all, I have been looking at the manual and the list and cannot figure out an easy way to do this, so before I try something a bit more cumbersome I thought of asking... What I want is to have a way in the submit file to specify that the jobs being submitted should only attempt to start running during the night (say 6PM-9AM). I know that I could use periodic_hold and periodic_release, but I'm not too convinced about them. If a job starts running at 10PM and it is still running at 9AM I don't want to automatically put it on hold. I would like to give it a chance to continue and finish, but if the job is evicted at 11AM, then it is not worthwile to start it again until 6PM. Also, keep in mind that this should not be a configuration for the machines in the pool. These are able to run jobs all day. This should only apply to a particular cluster of jobs (and therefore best if it can be done by configuration in the submit file).
It is much better to apply it to the machines in the pool which would run the jobs* - simply mark any jobs with this criteria* with an attribute like +OnlyRunOverNight = true # from my own config but with some tweaks: # work between 8am and 8pm Monday to Friday AllowJobOverrun = True HappyToRunAlways = False OnHoliday = False WorkHours = (( (ClockMin >= 480 && ClockMin < 1200) && (ClockDay > 0 && ClockDay < 6) ) && ( $(OnHoliday) == False )) TargetJobIsOverNightOnly = (TARGET.OnlyRunOverNight =!= UNDEFINED && TARGET.OnlyRunOverNight == true) # Assuming your machines have their own start requirenments you can allow these to still # remain in place by placing this into condor_config.local or by placing them in a config directory in the correct lexical ordering START = $(START) && ( $(TargetJobIsOverNightOnly) && ( $(HappyToRunAlways) || $(WorkHours) == False )) PREEMPT= $(PREEMPT) || ( $(TargetJobIsOverNightOnly) && ( ($(HappyToRunAlways) == False ) && ( $(AllowJobOverrun) == False) && $(WorkHours) )) This assumes identical start and preempt times - you could easily change that requirement with a minor difference in the $(WorkHours) macro for start and preempt. Note that this example was intented work workstations of users who are aware of condor being on their machines and willing to indicate that they are on holiday. You may not need this flexibility. It also jumps through some hoops so that jobs which don't mark themselves as overnight only are assume not to be overnight only (changing this left as excersie for reader) Also I just altered the real config slightly with no syntax/sanity checking so test this before you use it - I rarely get my code compiling first time without syntax highlighting :) Matt * If this is impossible because you don't control the config of you pool machines then it is much more hassle and would be best controlled by an external sceduler (which can be run on the schedd itself as a scheduler universe in smiilar fashion to the dagman ones). I suggest the solution above because it is much simpler and less error prone within the limitations of a static config and good suer submit behaviour.