Skip to content

Instantly share code, notes, and snippets.

@Akramz
Forked from appleparan/condor_config.local
Last active November 26, 2015 04:53
Show Gist options
  • Save Akramz/6b2f96dcfbdf42729895 to your computer and use it in GitHub Desktop.
Save Akramz/6b2f96dcfbdf42729895 to your computer and use it in GitHub Desktop.
#CONDOR_HOST = reynolds-master.reynol.dz
#
#COLLECTOR_NAME = TEFPL at $(FULL_HOSTNAME))
#START = $(CS_START)
#SUSPEND = $(CS_SUSPEND)
#CONTINUE = $(CS_CONTINUE)
#PREEMPT = $(CS_PREEMPT)
#KILL = $(CS_KILL)
#
#DAEMON_LIST = MASTER, SCHEDD, STARTD
#
##Macros in the Config File
#NonCondorLoadAvg = (LoadAvg - CondorLoadAvg)
#HighLoad = 0.5
#BgndLoad = 0.3
#CPU_Busy = ($(NonCondorLoadAvg) >= $(HighLoad))
#CPU_Idle = ($(NonCondorLoadAvg) <= $(BgndLoad))
#KeyboardBusy = (KeyboardIdle < 10)
#MachineBusy = ($(CPU_Busy) || $(KeyboardBusy))
#ActivityTimer = (CurrentTime - EnteredCurrentActivity)
#
##Useful Macros: Universe
#STANDARD = 1
#VANILLA = 5
#IsVanilla = (TARGET.JobUniverse == $(VANILLA)
#IsStandard = (TARGET.JobUniverse == $(STANDARD)
#
##Useful Macros: Timers
#StateTimer = (CurrentTime - EnteredCurrentState)
#ActivityTimer = (CurrentTime - EnteredCurrentActivity)
#LastCkpt = (CurrentTime - LastPeriodicCheckpoint)
#
##Useful Macros: Limits
#BackgroundLoad = 0.3
#HighLoad = 0.7
#StartIdleTime = 15*$(MINUTE)
#MaxSuspendTime = 10*$(MINUTE)
#
##Useful Macros: Concepts
#NonCondorLoadAvg = (LoadAvg - CondorLoadAvg)
#KeyboardBusy = (KeyboardIdle < $(MINUTE))
#CPU_Idle = ($(NonCondorLoadAvg) <= $(BackgroundLoad))
#SmallJob = (TARGET.ImageSize < (15 * 1024))
#MachineBusy = ($(CPU_Busy) || $(KeyboardBusy))
#Maintenance = (ClockMin > 255 && ClockMin < 315 && $(ConsoleBusy) == False)
#
##WANT_SUSPEND and WANT_VACATE
#WANT_SUSPEND = ( $(SmallJob) || $(KeyboardNotBusy) || $(Maintenance) || $(IsPVM) || $(IsVanilla) )
#WANT_VACATE = $(ActivationTimer) > 10 * $(MINUTE) || $(IsPVM) || $(IsVanilla)
#
##START
#CS_START = \
#( ($(CPU_Idle) ||
# (State!="Unclaimed" && State!="Owner")) \
# && (KeyboardIdle > $(StartIdleTime)) \
# && (TARGET.ImageSize <= ((Memory - 15)*1024)) \
# && ( (MemoryRequirements < (Memory - 15)) \
# || (MemoryRequirements =?= UNDEFINED \
# && (RemoteUserCpu > 0.0 || Memory > 127)) ) )
#
##SUSPEND
#CS_SUSPEND =
#( ( (CpuBusyTime > 2 * $(MINUTE))
# && $(ActivationTimer) > 90 )
# || $(KeyboardBusy) )
#
##CONTINUE
#CS_CONTINUE =
# ( ($(CPU_Idle) &&
# ($(ActivityTimer) > 10))
# && (KeyboardIdle >
# $(ContinueIdleTime)) )
#
##PREEMPT
#CS_PREEMPT =
# ( ( ($(ActivityTimer) >
# $(MaxSuspendTime))
# && (Activity == "Suspended"))
# || (SUSPEND &&
# (WANT_SUSPEND == False)) )
#
##KILL
#CS_KILL = ($(ActivityTimer) > $(MaxVacateTime))
# From https://lists.cs.wisc.edu/archive/htcondor-users/2009-January/msg00086.shtml
#require that whole-machine jobs only match to Slot1
START = ($(START)) && (TARGET.RequiresWholeMachine =!= TRUE || SlotID == 1)
# have the machine advertise when it is running a whole-machine job
STARTD_JOB_EXPRS = $(STARTD_JOB_EXPRS) RequiresWholeMachine
# Export the job expr to all other slots
STARTD_SLOT_EXPRS = RequiresWholeMachine
# require that no single-cpu jobs may start when a whole-machine job is running
START = ($(START)) && (SlotID == 1 || Slot1_RequiresWholeMachine =!= True)
# suspend existing single-cpu jobs when there is a whole-machine job
SUSPEND = ($(SUSPEND)) || (SlotID != 1 && Slot1_RequiresWholeMachine =?= True)
## Instead of suspending the single-cpu jobs while the whole-machine job runs, you could suspend the whole-machine job while the single-cpu jobs finish. Example:
## advertise the activity of each slot into the ads of the other slots,
## so the SUSPEND expression can see it
#STARTD_SLOT_EXPRS = $(STARTD_SLOT_EXPRS) Activity
#
## Suspend the whole-machine job until the other slots are empty
#SUSPEND = ($(SUSPEND)) || (SlotID == 1 && Slot1_RequiresWholeMachine =?= True && \ (Slot2_Activity =?= "Busy" || Slot3_Activity =?= "Busy" ) || Slot4_Activity =?= "Busy" ) || Slot5_Activity =?= "Busy" ) || Slot6_Activity =?= "Busy" || Slot7_Activity =?= "Busy" || Slot8_Activity =?= "Busy"))
#You might want to steer whole-machine jobs towards machines that are completely vacant, especially on the slots only for single-cpu jobs.
#Here's a simple example that just avoids machines with a high load:
#NEGOTIATOR_PRE_JOB_RANK = -TARGET.LoadAvg*(MY.RequiresWholeMachine =?= True)
STARTD_SLOT_EXPRS = $(STARTD_SLOT_EXPRS) Activity
NEGOTIATOR_PRE_JOB_RANK = ($(NEGOTIATOR_PRE_JOB_RANK)) && (MY.RequiresWholeMachine =?= True) * \
(Slot2_Activity =!= "Busy" + Slot3_Activity =!= "Busy" + Slot4_Activity =!= "Busy" + \
Slot5_Activity =!= "Busy" + Slot6_Activity =!= "Busy" + Slot7_Activity =!= "Busy" + Slot8_Activity =!= "Busy" )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment