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

Re: [Condor-users] Condor installation: VMMEMORY setting behaves odd / buggy?



On 08/11/2010 10:50 PM, Rob wrote:

Hi,

I'm about to install Condor on 300+ public library Windows PCs,
which have VMware 1.0.10 installed.
During the Condor installation I have to decide the value of VMMEMORY
and VMMAXNUMBER

From the manual:

VMMEMORY
an integer value that defines the maximum memory each VM run on the
target machine.

VMMAXNUMBER
an integer value that defines the number of VMs that can be run in parallel
on the target machine.
I want to run at most one VM per slot on a multi core PC, so I set
    VMMAXNUMBER = NUMBER_OF_PROCESSORS


I then decided:

VMMEMORY = ( 50 * RAM ) / ( 100 * NUMBER_OF_PROCESSORS )

or, in other words all the slots together share equally half of the PC's total
RAM.

(I thought that VMMEMORY should not be too large, as the Windows OS
may still need some RAM, even though it is in idle state. Is that right?
Or am I too conservative here?)

For example: a dual core PC with 2GB of RAM will then assign 512 MB to each
slot as VMMEMORY. I've tried this on a test PC with such specs, and I see:

$ condor_status -vm

Name VMType Network State Activity LoadAv VMMe ActvtyTime VMNetworking

slot1@SP_1F_02  vmware nat,bridge Unclaimed Idle     0.930   512  0+00:00:04
slot2@SP_1F_02  vmware nat,bridge Unclaimed Idle     0.050    12  0+00:08:10
                 Total Owner Claimed Unclaimed Matched Preempting Backfill

   INTEL/WINNT51     2     0       0         2       0          0        0
           Total     2     0       0         2       0          0        0

$ condor_status -vm -l

MyType = "Machine"
TargetType = "Job"
VM_Type = "vmware"
VM_Memory = 512
VM_Networking = TRUE
VM_Networking_Types = "nat,bridge"
VM_AvailNum = 10000

MyType = "Machine"
TargetType = "Job"
VM_Type = "vmware"
VM_Memory = 512
VM_Networking = TRUE
VM_Networking_Types = "nat,bridge"
VM_AvailNum = 10000


So it seems that each slot on this PC can use 512 MB RAM.

===================================================

Now, when a virtual machine with "vm_memory = 500" runs on
one slot, I will get following:

$ condor_status -vm

Name VMType Network State Activity LoadAv VMMe ActvtyTime VMNetworking

slot1@SP_1F_02  vmware nat,bridge Claimed   Busy  0.000  12  0+00:00:34
slot2@SP_1F_02  vmware nat,bridge Unclaimed Idle   0.010  12  0+00:08:57
                 Total Owner Claimed Unclaimed Matched Preempting Backfill

   INTEL/WINNT51     2     0       1         1       0          0        0
           Total     2     0       1         1       0          0        0

$ condor_status -vm -l

MyType = "Machine"
TargetType = "Job"
VM_Type = "vmware"
VM_Memory = 12
VM_Networking = TRUE
VM_Networking_Types = "nat,bridge"
VM_AvailNum = 10000

MyType = "Machine"
TargetType = "Job"
VM_Type = "vmware"
VM_Memory = 12
VM_Networking = TRUE
VM_Networking_Types = "nat,bridge"
VM_AvailNum = 10000


This is what confuses me:
the VM_Memory has reduced to 12 MB on BOTH slots!!

This means: the 512 MB assigned to each slot, is actually the TOTAL
memory the two slots can use TOGETHER.
This seems to be in conflict with the description in the manual of VMMEMORY,
which says that EACH virtual machine (= each slot?) can use the
specified memory.....

Is something buggy here?

Thank you!
Rob.

The doc is buggy here.

According to the 7.4 manual,

VM_MEMORY
An integer to specify the maximum amount of memory in Mbytes that will be allowed to the virtual machine program.

VM_MAX_NUMBER
An integer limit on the number of executing virtual machines. When not defined, the default value is the same NUM_CPUS. When it evaluates to Undefined, as is the case when not defined with a numeric value, no meaningful limit is imposed.

The VM_MEMORY description is still a bit vague. It would be more clear as "will be allocated to virtual machines." Both these params define a startd-wide resource (memory and # vms) to be consumed by running VMs. So VM_MEMORY is really the max shared among all VMs.

https://condor-wiki.cs.wisc.edu/index.cgi/tktview?tn=625,31

It may be interesting to generalize these resources. You might say we have pool wide limiters in concurrency limits, but no host local limits, except for these.

Best,


matt