[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Condor-users] Request_memory and dynamic slots



Thank you very much Todd, much appreciated.

As Todd said, if others could comment on the 7.4/7.6 behaviour of various
Request_memory=n settings with a pool using all dynamic slots, I would
also appreciate it.

For example, unless I dreamed it (which is possible :-) ), (Memory>0)
seemed to me to be a good 'trick' to get jobs running on machines where
Condor would think it was just under provisioned; and possibly help to
prevent the job being vacated because of using too much memory? (We don't
preempt, and many of our users don't checkpoint.) So, is Request_memory=1
similarly special?

That is also why I asked what the difference is in a job's execution
profile between
Request_memory = 3000 # the user got it spot on
and
Request_memory = 1000 # the user made an estimate but it was too low

best wishes
-Ian


On 23/05/2012 13:30, "Todd Tannenbaum" <tannenba@xxxxxxxxxxx> wrote:

>On 5/23/2012 3:08 AM, Ian Cottam wrote:
>> Scenario: we have a Linux/64 pool with all clients using dynamic slots.
>> We have 7.4/7.6 (but if the answer to the question below is different
>>for
>> 7.8 I would be interested in that too).
>>
>
>I'll tackle the answer for v7.8 since I think I can do that off the top
>of my head and things did change in v7.8... I'll let other answer for
>v7.4/v7.6.
>
>
>> We are about to tell our users not to use (Memory>=n) in Requirements,
>>but
>> use
>> Request_memory = n
>> as this appears to work much better with dynamic slots.
>>
>
>Yes, it not only appears to work better, it does work better :).  In
>fact, in v7.8 by default condor_submit will give a warning if you
>reference Memory in the Requirements expression and will suggest you use
>request_memory instead.
>
>
>In v7.8, the administrator has some config knobs to play with:
>
>JOB_DEFAULT_REQUESTM​EMORY : Used by condor_submit as the value for
>request_memory if the user does not include request_memory in the submit
>file.
>Defaults to ifthenelse(Me​moryUsage ​=!= ​UNDEFINED,​MemoryUsage,​ 1)
>
>The admin can also setup a default request_memory on the execute node -
>this is very handy if you don't have config control over all the
>machines submitting/flocking into your pool, or if you want to quantize
>the incoming request_memory so you don't end up with lots of little tiny
>1 MB slots that are hard to reuse.  The knob for this is
>MODIFY_REQUEST_EXPR_REQUESTMEMORY : ClassAd expression used by the
>startd to modify/over-ride whatever request_memory value is specified by
>the incoming job. The expression can reference attributes in the
>incoming job classad as well as machine ad attributes.
>Defaults to quantize(Requ​estMemory,​{TotalSlotMemory ​/​ ​TotalSlotCpus
>/​ ​4})​
>
>
>> Say a given job will grow to use 3000MB of memory; what is the
>>difference
>> between the following cases:
>>
>
>Note in all cases, condor_submit will append a clause to the
>Requirements expression such that:
>   Memory >= request_memory
>(i.e. match the job with a slot that has at least as much memory as the
>job requests).
>
>> a) User does not supply a Request_memory line.
>> I believe the default is Request_memory=1.
>>
>
>Then JOB_DEFAULT_REQUESTMEMORY is used, which will default to
>request_memory = 1 if the job has never run, else it will default to the
>memory usage observed from the last run.
>
>Note that if request_memory = 1, that will not necessarily result in a 1
>MB dynamic slot being created because of the default
>MODIFY_REQUEST_EXPR_REQUESTMEMORY.  If a job with request_memory = 1
>lands on a machine with 8 cores and 16 GB memory configured into one
>partionable slot, the startd will attempt to create a dynamic slot for
>this job with 512 MB. (16*1024/8/4=512)
>
>> b) User supplies:
>> Request_memory = 1
>> Is this different from the default case a (on 7.4/7.6)?
>>
>
>On v7.8 it is indeed different.  In case (a) request_memory equals
>whatever JOB_DEFAULT_REQUESTMEMORY is in the config, in case (b)
>request_memory equals 1.
>
>
>> c) User supplies:
>> Request_memory = 1000
>>
>> d) User supplies:
>> Request_memory = 3000
>>
>
>(c) and (d) are same as (b) --- condor_submit goes with what the user
>specifies.
>
>
>hope the above helps
>Todd
>


-- 
Ian Cottam
IT Services -- supporting research
Faculty of Engineering and Physical Sciences
The University of Manchester
"The only strategy that is guaranteed to fail is not taking risks." Mark
Zuckerberg