Hi all.

We've got some memory allocation/memory contention issues our users are 
complaining about. Many are saying they can't get their jobs to run because of 
memory resource issues.

An example:

scheduling info:
            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-2-3.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-12.local" because it offers only hc:virtual_free=12.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-6.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-10.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-11.local" because it offers only hc:virtual_free=2.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-9.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-2-1.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-3.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-0.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-4.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-14.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-8.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-1-6.local" because it offers only hc:virtual_free=5.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-2-2.local" because it offers only hc:virtual_free=12.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-5.local" because it offers only hc:virtual_free=4.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-1-3.local" because it offers only hc:virtual_free=5.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-0-7.local" because it offers only hc:virtual_free=12.000G
                            (-l h_vmem=24G,virtual_free=24G) cannot run at host 
"compute-1-5.local" because it offers only hc:virtual_free=5.000G

Another example, of a user who's job is successfully running:

hard resource_list:         mem_free=100G
mail_list:                  xyz
notify:                     FALSE
job_name:                   mlmassoc_GRMi
stdout_path_list:           NONE:NONE:/commented.out
jobshare:                   0
env_list:
script_file:                /commented.out
usage    1:                 cpu=2:08:09:22, mem=712416.09719 GBs, io=0.59519, 
vmem=3.379G, maxvmem=4.124G

If I look at the qhost outputs:

[root@cluster ~]# qhost
HOSTNAME                ARCH         NCPU  LOAD  MEMTOT  MEMUSE  SWAPTO  SWAPUS
-------------------------------------------------------------------------------
global                  -               -     -       -       -       -       -
compute-0-0             lx26-amd64     24  6.49   94.6G    5.5G     0.0     0.0
compute-0-1             lx26-amd64     24 10.71   94.6G    5.9G     0.0     0.0
compute-0-10            lx26-amd64     24  6.09   94.6G    5.1G     0.0     0.0
compute-0-11            lx26-amd64     24  6.10   94.6G    5.5G     0.0     0.0
compute-0-12            lx26-amd64     24  6.12   94.6G    8.1G     0.0     0.0
compute-0-13            lx26-amd64     24  8.41   94.6G    5.3G     0.0     0.0
compute-0-14            lx26-amd64     24  7.32   94.6G    7.6G     0.0     0.0
compute-0-15            lx26-amd64     24 10.42   94.6G    6.3G     0.0     0.0
compute-0-2             lx26-amd64     24  9.67   94.6G    5.5G     0.0     0.0
compute-0-3             lx26-amd64     24  7.17   94.6G    5.5G     0.0     0.0
compute-0-4             lx26-amd64     24  6.13   94.6G    4.0G  996.2M   27.5M
compute-0-5             lx26-amd64     24  6.36   94.6G    5.4G     0.0     0.0
compute-0-6             lx26-amd64     24  6.35   94.6G    6.4G     0.0     0.0
compute-0-7             lx26-amd64     24  8.08   94.6G    6.0G     0.0     0.0
compute-0-8             lx26-amd64     24  6.12   94.6G    8.4G     0.0     0.0
compute-0-9             lx26-amd64     24  6.12   94.6G    5.9G     0.0     0.0
compute-1-0             lx26-amd64     80 30.13  378.7G   36.2G     0.0     0.0
compute-1-1             lx26-amd64     80 28.93  378.7G   21.8G  996.2M  168.1M
compute-1-2             lx26-amd64     80 29.84  378.7G   23.2G  996.2M   46.8M
compute-1-3             lx26-amd64     80 27.03  378.7G   24.4G  996.2M   39.3M
compute-1-4             lx26-amd64     80 28.05  378.7G   23.2G  996.2M  122.0M
compute-1-5             lx26-amd64     80 27.47  378.7G   23.5G  996.2M  161.4M
compute-1-6             lx26-amd64     80 25.07  378.7G   25.6G  996.2M   91.5M
compute-1-7             lx26-amd64     80 26.98  378.7G   22.8G  996.2M  115.9M
compute-2-0             lx26-amd64     32 11.03   47.2G    2.6G 1000.0M   67.1M
compute-2-1             lx26-amd64     32  8.35   47.2G    3.7G 1000.0M   11.4M
compute-2-2             lx26-amd64     32 10.10   47.2G    1.7G 1000.0M  126.5M
compute-2-3             lx26-amd64     32  7.02   47.2G    3.4G 1000.0M   11.3M

So, it would seem to me we've got plenty of actual resources free, but our 
virtual_free complex seems to be doing something funny/misguided?

I'm worried that our virtual_free complex might actually be doing more harm 
than god here

Here is an example of some qhost –F output on two different node types:

compute-2-3             lx26-amd64     32  7.00   47.2G    3.4G 1000.0M   11.3M
   hl:arch=lx26-amd64
   hl:num_proc=32.000000
   hl:mem_total=47.187G
   hl:swap_total=999.992M
   hl:virtual_total=48.163G
   hl:load_avg=7.000000
   hl:load_short=7.000000
   hl:load_medium=7.000000
   hl:load_long=7.060000
   hl:mem_free=43.788G
   hl:swap_free=988.703M
   hc:virtual_free=4.000G
   hl:mem_used=3.398G
   hl:swap_used=11.289M
   hl:virtual_used=3.409G
   hl:cpu=6.400000
   hl:m_topology=SCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTT
   hl:m_topology_inuse=SCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTT
   hl:m_socket=2.000000
   hl:m_core=16.000000
   hl:np_load_avg=0.218750
   hl:np_load_short=0.218750
   hl:np_load_medium=0.218750
   hl:np_load_long=0.220625

compute-1-7             lx26-amd64     80 27.83  378.7G   22.8G  996.2M  115.9M
   hl:arch=lx26-amd64
   hl:num_proc=80.000000
   hl:mem_total=378.652G
   hl:swap_total=996.207M
   hl:virtual_total=379.624G
   hl:load_avg=27.830000
   hl:load_short=29.050000
   hl:load_medium=27.830000
   hl:load_long=27.360000
   hl:mem_free=355.814G
   hl:swap_free=880.266M
   hc:virtual_free=13.000G
   hl:mem_used=22.838G
   hl:swap_used=115.941M
   hl:virtual_used=22.951G
   hl:cpu=33.600000
   
hl:m_topology=SCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTT
   
hl:m_topology_inuse=SCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTTSCTTCTTCTTCTTCTTCTTCTTCTTCTTCTT
   hl:m_socket=4.000000
   hl:m_core=40.000000
   hl:np_load_avg=0.347875
   hl:np_load_short=0.363125
   hl:np_load_medium=0.347875
   hl:np_load_long=0.342000

Our virtual free complex, designated as memory complex, relation <=, is request 
able, is set as a consumable and has a default of 2.

I guess what I'd like to aim for is some sane memory management and a way of 
setting up some "rules" for my users so they can allocate sensible amounts of 
RAM, that reflect really what the hosts/execution nodes are capable of.

I've got (unfortunately!) three types of nodes in the one queue. One type has 
384GB of RAM. One type has 96GB of RAM. One type has 48GB of RAM.

Are my users just expecting too much? Are there some caps/resource limits I 
should put in place to manage expectations or simplyinvest in some "big memory" 
nodes for really large jobs and make a separate highmem.q for such tasks? 
You'll see above some users have tried asking for 100GB as the mem_free complex 
is used.

Thoughts/experiences/ideas?

Thanks for your time, all.

--JC

_______________________________________________
users mailing list
users@gridengine.org
https://gridengine.org/mailman/listinfo/users

Reply via email to