[GE users] Cannot make virtual_free consumable?

reuti reuti at staff.uni-marburg.de
Thu Nov 20 22:02:19 GMT 2008

Am 20.11.2008 um 21:37 schrieb Piotr Domagalski:

> On Thu, Nov 20, 2008 at 8:19 PM, reuti <reuti at staff.uni-marburg.de>  
> wrote:
>>> 1. When a job has -l vf=3G it is not run -- the value from load  
>>> sensor
>>> (2G) is used.
>> Correct.
>>> 2. The system happily allows me to run 4 jobs each having -l vf=1G
>> Well, not really. If your job would really consume 1GB of memory,
>> then the load sensor would reflect this. Hence also only two would be
>> possible. For now you used just a "sleep 60" or alike in the  
>> jobscript?
> Yes, I used sleep. But even if I used jobs that really allocate 1GB
> but do it slowly, I could submit 4 of them and consequently
> over-subscribe the memory. That's what worries me.

Yep, this is the purpose of "job_load_adjustments" and  
"load_adjustment_decay_time" in the schduler configuration (man  

> This means that the load sensor value if lower than the one kept by
> SGE is only used to verify whether the job requirements can be met.
> The debiting itself always happens to value kept by SGE.


>>> 3. The Advance Reservation doesn't consider the value from load
>>> sensors at all (i.e. I can have 4 ARs on this host each requiring  
>>> 1G).
>> This is the same as above in 2. ?!?
>> It can't know, what the value of the load sensor will be in the
>> future.
> I forgot to add that the case with AR is rather understandable to me
> ;-) I just wanted to be sure that the AR actually always ignores the
> values from load sensors as this is what I've observed...
> Unfortunately this may result in AR successfully being created but the
> job not being able to run within this AR even when it requests the
> same amount of memory as was reserved. But of course, taking into
> account the load sensor values would not change much.

When all jobs are finished at the ("default_duration" time or killed  
by h_rt) and stay within the requested virtual_free, it should be safe.

> You say that one should set mem_free (or virtual_free, but let's use
> mem_free in this example) to the amount of installed RAM. But isn't it
> safer to set it rather lower than e.g. the mem_free reported by load
> sensor "normally" at the machine? If I set it to 4GB on a 4GB machine
> it means that I can create an AR for 4GB but then my jobs will not be
> run if they require 4GB within this AR because the load sensor will
> always report a lower value.

For mem_free: yes, you are right. Therefore virtual_free is often  
used, which includes the swap. As it's unlikely that all jobs will  
exactly use the requested memory, the machine shouldn't swap. This  
means of course, to have a low value for the swap space like 512MB -  
1GB just to cover the OS overhead.

-- Reuti


To unsubscribe from this discussion, e-mail: [users-unsubscribe at gridengine.sunsource.net].

More information about the gridengine-users mailing list