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

Re: [Condor-users] How to add swap to slot memory?



On Thu, Jul 05, 2007 at 04:13:42PM +0200, Steffen Grunewald wrote:
> by default, only the real memory of a node is split up into equal parts
> for each slot. While this makes sense most of the time, I'd like to add
> some small error margin (and allow jobs to run into swap a bit). 
> Is there a way to determine the size of the total available virtual memory?

condor_status -long shows TotalVirtualMemory, but I cannot do maths with it

> If not, if I want to add 10% of the memory, would
> 	RESERVED_MEMORY = - $(MY.MEMORY)/10
> be correct?

Of course not. 
MY.MEMORY refers to the job, not the machine. (I'll try to keep in mind that
MY means JOB while TARGET means MACHINE...)
Even TARGET.Memory would *not* work - it would be great to have arithmetic
expressions allowed here (TotalVirtualMemory/4 would make a nice piece of
additional memory).
I've done some tests, and cannot assign anything looking like an expression.

I intend to use Peter Myerscough-Jackopson's idea to split an existing 
machine into 3 slots, one covering all resources, the other two one half 
each (it's a dual-core machine, but some of the jobs need all the memory).
At the moment I seem to be unable to "simply" double the number of CPUs
and RAM MBs. Needless to say that I *hate* magic numbers in config files...
What I could imagine is 

NUM_CPUS = 2*NUM_CPUS
MEMORY = 2*MEMORY

so that both resources can be properly split into 1/2 for the "full node"
slot, and 2* 1/4 for the "half node" slots.
For now I have to insert the actual values...

Another value I'd love to adjust dynamically is the NEGOTIATOR_PRE_JOB_RANK
(to make partly claimed nodes more "interesting"), again using Peter's
    NUMBER_OF_CLAIMED_CPUS = \
        ( \
              ( 1 * (Slot1_State =?= "Claimed") ) \
            + ( 1 * (Slot2_State =?= "Claimed") ) \
            + ( 2 * (Slot3_State =?= "Claimed") ) \
        )
and something like
NEGOTIATOR_PRE_JOB_RANK = -TARGET.Memory + 100 * $(NUMBER_OF_CLAIMED_CPUS)
- is this possible at all?

Any idea is greatly appreciated!

Steffen