[GE users] Memory reservation

Andreas Haas Andreas.Haas at Sun.COM
Thu Dec 15 15:23:59 GMT 2005

On Thu, 15 Dec 2005, Michael Green wrote:

> On 12/14/05, Andreas Haas <Andreas.Haas at sun.com> wrote:
> >
> > Since jobs memory consumption is monitored by Grid Engine based on 'h_vmem'
> > request I recommend to configure it as a consumable and use
> >
> >    complex_values h_vmem=2G
> >
> > on a per host basis.
> bioinfo4:~ # qconf -sc | grep h_vmem
> h_vmem              h_vmem     MEMORY      <=    YES         YES
>  0        0


> bioinfo4:~ # qconf -se b1
> hostname              b1.biocl.weizmann.ac.il
> load_scaling          NONE
> complex_values        h_vmem=2G
> same for all other exec hosts.
> and now :
> -------------------------------------------------------------------------------
> global                  -               -     -       -       -       -       -
> b1                      lx24-x86        4  1.00    2.0G    1.8G    3.9G  949.3M
> b2                      lx24-x86        4  1.01    2.0G    1.8G    3.9G    1.5G
> b3                      lx24-x86        4  1.00    2.0G    1.9G    3.9G    1.0G
> b4                      lx24-x86        4  1.02    2.0G    1.9G    3.9G  965.8M
> that shows that all the hosts have 1.8G used leaving 200M free.

Ok. I assume this is since physical memory is being used by the OS for
caching purposes.

> But now if I do
> bioinfo4:~ # qselect -l h_vmem=500M
> all.q at b1.biocl.weizmann.ac.il
> all.q at b2.biocl.weizmann.ac.il
> all.q at b3.biocl.weizmann.ac.il
> all.q at b4.biocl.weizmann.ac.il

You see that behaviour since Grid Engine does not subtract "mem_used"
load value from "h_vmem" consumable a priori (as you possibly expect).

> > If 'h_vmem' is a host consumable Grid Engine does resource bookkeeping for
> > each job.
> How can I monitor the consumption of h_vmem? Whenever I check h_vmem
> it's always 2G:
> bioinfo4:~ # qstat -F | grep -e all.q -e h_vmem
> all.q at b1.biocl.weizmann.ac.il  BIP   1/4       1.02     lx24-x86
>         hc:h_vmem=2.000G

This is correct as long as there are not running jobs, because all you did was
configure "h_vmem" as a consumable with 2G capacity.

> > More information about RR is available under
> >
> >    http://gridengine.sunsource.net/nonav/source/browse/~checkout~/gridengine/doc/devel/rfe/resource_reservation.txt?content-type=text/plain
> thanks, I've read all of it yesterday night, I cannot say that I
> understood all of it, but I got some better understanding of RR, AR
> and Backfilling.

You need to decide how you wish your memory resource be managed

   (1) You can use only a memory consumable
   (2) You can use only a memory load value
   (3) You can use a combination of memory load value and memory consumable

if you use -l h_vmem as I recommended you have model (1) only. For purposes of
RR that is sufficient, if any noteworthy workload is under control of Grid

If this is not the case, then you need to use model (3). For this you need a
"h_vmem" load value in addition to the "h_vmem" consumable. That can be achieved
by configuring a memory load sensor e.g. based on Grid Engine
utilbin/lx24-x86/loadcheck binary. If you want to pursue this you need to decide
which type of memory should become base of "h_vmem" load value. Generally speaking
there are three of them which might make sense:

   > $SGE_ROOT/utilbin/sol-sparc64/loadcheck | grep _free
   mem_free        690.000000M
   swap_free       9930.000000M
   virtual_free    10620.000000M

Hope this helps.


To unsubscribe, e-mail: users-unsubscribe at gridengine.sunsource.net
For additional commands, e-mail: users-help at gridengine.sunsource.net

More information about the gridengine-users mailing list