Class MultipleQueuesStrategy
java.lang.Object
edu.kit.ipd.sdq.pcm.simulation.scheduler.exact.queueing.strategies.MultipleQueuesStrategy
- All Implemented Interfaces:
IQueueingStrategy
-
Constructor Summary
ConstructorsConstructorDescriptionMultipleQueuesStrategy(Collection<IResourceInstance> allInstances, IRunQueue prototypeRunQueue, IInstanceSelector initialInstanceSelector, ILoadBalancer loadBalancer, boolean in_front_when_balancing) -
Method Summary
Modifier and TypeMethodDescriptionvoidactivelyBalance(IResourceInstance instance) Depending on the underlying implementation the load is balanced between the resource instances.voidaddProcess(IActiveProcess process, IResourceInstance current, boolean inFront) Adds a process to the runqueue.booleancontainsPending(IActiveProcess process) voidforkProcess(IActiveProcess process, IResourceInstance current, boolean inFront) voidfromRunningToWaiting(IActiveProcess process) voidfromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting) Returns all queues without jobs.getNextProcessFor(IResourceInstance instance) Returns the next runnable process for the resource instance.intgetQueueLengthFor(SimResourceInstance simResourceInstance) getRunQueueFor(IResourceInstance instance) Returns the RunQueue for a resource instance.getStarvingProcesses(IResourceInstance instance, double starvationLimit) booleanisIdle(IResourceInstance instance) True, if the given resource has no running or pending jobs, otherwise false.voidmove(IActiveProcess process, IResourceInstance src, IResourceInstance dest) Moves the given process from the runqueue of the src instance to the runqueue of the dest instance.voidonSleep(IResourceInstance lastInstance) voidregisterProcess(IActiveProcess process, IResourceInstance current) booleanremovePendingProcess(IActiveProcess process) Removes at the pending queues of the queuing strategy and tries to remove the process there.voidremoveRunning(IActiveProcess process) Removes a process from the running list of the instance.voidrunningOn(IActiveProcess process) voidsetRunningOn(IActiveProcess process, IResourceInstance instance) Sets the process as executing on the given instance.voidterminateProcess(IActiveProcess process)
-
Constructor Details
-
MultipleQueuesStrategy
public MultipleQueuesStrategy(Collection<IResourceInstance> allInstances, IRunQueue prototypeRunQueue, IInstanceSelector initialInstanceSelector, ILoadBalancer loadBalancer, boolean in_front_when_balancing)
-
-
Method Details
-
getRunQueueFor
Returns the RunQueue for a resource instance. -
getNextProcessFor
Returns the next runnable process for the resource instance.- Specified by:
getNextProcessForin interfaceIQueueingStrategy
-
addProcess
Adds a process to the runqueue. The process is added using the strategy of the runqueue. A process is added after its creation or after waiting.- Specified by:
addProcessin interfaceIQueueingStrategyinFront- If true, the process is added at the beginning of its queue, otherwise at its end.
-
move
Moves the given process from the runqueue of the src instance to the runqueue of the dest instance.- Parameters:
process- Process to be moved.src- Source resource instance.dest- Destination resource instance.
-
activelyBalance
Description copied from interface:IQueueingStrategyDepending on the underlying implementation the load is balanced between the resource instances.- Specified by:
activelyBalancein interfaceIQueueingStrategy- Parameters:
instance- Instance initiating the load balance.
-
getResourceInstances
-
isIdle
Description copied from interface:IQueueingStrategyTrue, if the given resource has no running or pending jobs, otherwise false.- Specified by:
isIdlein interfaceIQueueingStrategy
-
getIdleInstances
Returns all queues without jobs.- Parameters:
runQueueCollection-- Returns:
-
removePendingProcess
Description copied from interface:IQueueingStrategyRemoves at the pending queues of the queuing strategy and tries to remove the process there.- Specified by:
removePendingProcessin interfaceIQueueingStrategy- Parameters:
process- Process that should be removed.- Returns:
- True, if the process was successfully removed. False, if the process was not found in the pending queues.
-
containsPending
- Specified by:
containsPendingin interfaceIQueueingStrategy- Parameters:
process- Process looked for.- Returns:
- True, if the process is in a pending queue of the strategy.
-
removeRunning
Description copied from interface:IQueueingStrategyRemoves a process from the running list of the instance.- Specified by:
removeRunningin interfaceIQueueingStrategy- Parameters:
process- Process of interest.
-
runningOn
- Specified by:
runningOnin interfaceIQueueingStrategy- Parameters:
process- Process of interest.- Returns:
- Returns the resource instance the process is currently running on. NULL if the process is not assigned to a resource.
-
setRunningOn
Description copied from interface:IQueueingStrategySets the process as executing on the given instance. In order for this operation to be successful, the process must be in ready state and in the a pending queue of the strategy.- Specified by:
setRunningOnin interfaceIQueueingStrategy- Parameters:
process- Process that shall be executed.instance- Target instance for the process.
-
forkProcess
- Specified by:
forkProcessin interfaceIQueueingStrategy
-
registerProcess
- Specified by:
registerProcessin interfaceIQueueingStrategy
-
fromRunningToWaiting
- Specified by:
fromRunningToWaitingin interfaceIQueueingStrategy
-
onSleep
- Specified by:
onSleepin interfaceIQueueingStrategy
-
terminateProcess
- Specified by:
terminateProcessin interfaceIQueueingStrategy
-
fromWaitingToReady
public void fromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting) - Specified by:
fromWaitingToReadyin interfaceIQueueingStrategy
-
getStarvingProcesses
public List<IActiveProcess> getStarvingProcesses(IResourceInstance instance, double starvationLimit) - Specified by:
getStarvingProcessesin interfaceIQueueingStrategy
-
resetStarvationInfo
public void resetStarvationInfo()- Specified by:
resetStarvationInfoin interfaceIQueueingStrategy
-
getQueueLengthFor
- Specified by:
getQueueLengthForin interfaceIQueueingStrategy
-