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

[Condor-users] Allow benchmarking on SMP machines



Hi. We're currently testing condor on a dual opteron cluster, but have hit a few snags along the way. First, the division of resources equally between all CPUs is not appropriate for large-memory jobs that could consume the entire amount of available ram. I seem to have solved this using the START expression in the file included below.

A remaining problem is that of running jobs that require careful timing. That is, the user would need to specify something in their spec file to insure that the job would receive a full machine. The obvious way to accomplish this within the framework of the configuration I have currently would be to specify a very large memory size, which would satisfy the vm3 START requirements. However, as only a few of our machines have 16 or 32GB of ram, we certainly do not want to waste them on small, but timed, jobs that could otherwise run on a 4GB machine. What suggestions do you have for providing this behavior?


Thanks, Jacob Joseph Auton Lab, Carnegie Mellon University



------------------------------------------------------------------------
DAEMON_LIST = MASTER,SCHEDD,STARTD
SUSPEND = False
PREEMPT = False

# Allow full utilization of the memory in the machine by creating
# 2 50% virtual machines and 1 100% virtual machine and use both
# CPUs whenever possible(with 2 small jobs)
# MEMORY must be 2*(Ram MB)
# Not sure why MEMORY = $(MEMORY)*2 doesn't work
NUM_CPUS = 3
MEMORY = 32768

VIRTUAL_MACHINE_TYPE_1 = cpus=1, ram=1/4, s=1/4, d=1/4
VIRTUAL_MACHINE_TYPE_2 = cpus=1, ram=1/2, s=1/4, d=1/4

# ClassAD attributed shared between virtual machines
STARTD_VM_EXPRS = Activity

# VM1 and VM2 are small memory, VM3 is the full amount of ram
NUM_VIRTUAL_MACHINES_TYPE_1 = 2
NUM_VIRTUAL_MACHINES_TYPE_2 = 1

START = ( ( (VirtualMachineID == 1) && $(VMsmall_START) ) || \
          ( (VirtualMachineID == 2) && $(VMsmall_START) ) || \
          ( (VirtualMachineID == 3) && $(VMlarge_START) ) )

VMsmall_START = (vm3_Activity == "Idle")

VMlarge_START = ( ( vm1_Activity == "Idle" ) && \
                  ( vm2_Activity == "Idle" ) && \
                  ( ImageSize >= $(MEMORY)*1024/2 ) )