One advanced scheduling feature of Condor is the ability to set a time, in the future, when a job should be run. This is called a deferral time.
deferral_time command, you simply specify a time, in seconds since EPOCH, when your job should run:
executable = /bin/date log = deferral.log output = deferral.out error = deferral.err deferral_time = 1357016400 queue
Use date(1) to generate the deferral_time.
$ date -d @1357016400 Tue Jan 1 00:00:00 EST 2013 $ date +%s -d "2013-01-01 00:00:00" 1357016400
After submitting the job and waiting until 1 Jan 2013, you can see the result by looking in deferral.log and deferral.out.
$ grep ^00 deferral.log 000 (001.000.000) 08/15 22:33:00 Job submitted from host: <127.0.0.1:56006> 001 (001.000.000) 01/01 00:00:00 Job executing on host: <127.0.0.2:57590> 006 (001.000.000) 01/01 00:00:00 Image size of job updated: 75 005 (001.000.000) 01/01 00:00:00 Job terminated. $ cat deferral.out Tue Jan 1 00:00:00 EST 2013
Of course there is no guarantee that a resource will be available at a precise time in the future. A job that does not run at its deferral_time will be put on Hold for manual intervention.
To reduce the likelihood of missing the deferral_time and needing manual intervention, the
deferral_window commands are available. Respectively, they specify the amount of time before the deferral_time that the job can be matched with a resource and how long after the deferral_time execution is acceptable.
executable = /bin/date log = deferral.log output = deferral.out error = deferral.err deferral_time = 1357016400 # 1 day = 24 hour * 60 min * 60 sec = 86,400 seconds # 1/2 day = 86,400 sec / 2 = 43,200 seconds deferral_prep_time = 86400 deferral_window = 43200 queue
In the example above, the job may be matched to a resource, where it will keep the resource Claimed/Busy for up to a day (deferral_prep_time) in advance of its actual run. This will make it more likely that the job will run at precisely the deferral_time. It also means that for accounting purposes, you will be charged for using the resource, though the job has not yet run.
Additionally, if the job is not matched or otherwise does not start at precisely deferral_time, it has half a day (deferral_window) to run before it is put on hold for manual intervention.