{endcode} -Note that preempted jobs will go back to idle in the job queue and will potentially try to run again if they can match to a machine. If you instead wish to put the jobs on hold when they are evicted, either use the submit-side policy described later or, in Condor 7.3, use WANT_HOLD. Example: +Note that preempted jobs will go back to idle in the job queue and will potentially try to run again if they can match to a machine. If you instead wish to put the jobs on hold when they are evicted, either use the submit-side policy described later or, in Condor 7.3+, use the expression WANT_HOLD. One advantage of using WANT_HOLD -vs- the submit-side policy example below is the startd will evaluate these attributes much more frequently than updates are sent to the schedd. An example using WANT_HOLD : {code} +VIRTUAL_MEMORY_AVAILABLE_MB = (VirtualMemory*0.9) +MEMORY_EXCEEDED = ImageSize/1024 > $(VIRTUAL_MEMORY_AVAILABLE_MB) +PREEMPT = ($(PREEMPT)) || ($(MEMORY_EXCEEDED)) +WANT_SUSPEND = ($(WANT_SUSPEND)) && ($(MEMORY_EXCEEDED)) =!= TRUE WANT_HOLD = ($(MEMORY_EXCEEDED)) WANT_HOLD_REASON = \ - ifThenElse( ($(MEMORY_EXCEEDED)) && isUndefined(MemoryRequirementsMB), \ - "Your job used too much memory, as measured by ImageSize. If virtual memory usage is not a reliable estimate of real memory requirements for your job, please add the attribute MemoryRequirementsMB to your job to override this check.", \ - ifThenElse( ($(MEMORY_EXCEEDED)), \ - "Your job used too much memory.", \ - undefined ) ) - + ifThenElse( $(MEMORY_EXCEEDED), \ + "Your job used too much virtual memory.", \ + undefined ) {endcode} {subsection: How to hold/remove a job that uses too much memory}