Class MultipleQueuesStrategy
java.lang.Object
edu.kit.ipd.sdq.pcm.simulation.scheduler.exact.queueing.strategies.MultipleQueuesStrategy
- All Implemented Interfaces:
IQueueingStrategy
-
Constructor Summary
ConstructorDescriptionMultipleQueuesStrategy
(Collection<IResourceInstance> allInstances, IRunQueue prototypeRunQueue, IInstanceSelector initialInstanceSelector, ILoadBalancer loadBalancer, boolean in_front_when_balancing) -
Method Summary
Modifier and TypeMethodDescriptionvoid
activelyBalance
(IResourceInstance instance) Depending on the underlying implementation the load is balanced between the resource instances.void
addProcess
(IActiveProcess process, IResourceInstance current, boolean inFront) Adds a process to the runqueue.boolean
containsPending
(IActiveProcess process) void
forkProcess
(IActiveProcess process, IResourceInstance current, boolean inFront) void
fromRunningToWaiting
(IActiveProcess process) void
fromWaitingToReady
(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.int
getQueueLengthFor
(SimResourceInstance simResourceInstance) getRunQueueFor
(IResourceInstance instance) Returns the RunQueue for a resource instance.getStarvingProcesses
(IResourceInstance instance, double starvationLimit) boolean
isIdle
(IResourceInstance instance) True, if the given resource has no running or pending jobs, otherwise false.void
move
(IActiveProcess process, IResourceInstance src, IResourceInstance dest) Moves the given process from the runqueue of the src instance to the runqueue of the dest instance.void
onSleep
(IResourceInstance lastInstance) void
registerProcess
(IActiveProcess process, IResourceInstance current) boolean
removePendingProcess
(IActiveProcess process) Removes at the pending queues of the queuing strategy and tries to remove the process there.void
removeRunning
(IActiveProcess process) Removes a process from the running list of the instance.void
runningOn
(IActiveProcess process) void
setRunningOn
(IActiveProcess process, IResourceInstance instance) Sets the process as executing on the given instance.void
terminateProcess
(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:
getNextProcessFor
in 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:
addProcess
in interfaceIQueueingStrategy
inFront
- 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:IQueueingStrategy
Depending on the underlying implementation the load is balanced between the resource instances.- Specified by:
activelyBalance
in interfaceIQueueingStrategy
- Parameters:
instance
- Instance initiating the load balance.
-
getResourceInstances
-
isIdle
Description copied from interface:IQueueingStrategy
True, if the given resource has no running or pending jobs, otherwise false.- Specified by:
isIdle
in interfaceIQueueingStrategy
-
getIdleInstances
Returns all queues without jobs.- Parameters:
runQueueCollection
-- Returns:
-
removePendingProcess
Description copied from interface:IQueueingStrategy
Removes at the pending queues of the queuing strategy and tries to remove the process there.- Specified by:
removePendingProcess
in 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:
containsPending
in interfaceIQueueingStrategy
- Parameters:
process
- Process looked for.- Returns:
- True, if the process is in a pending queue of the strategy.
-
removeRunning
Description copied from interface:IQueueingStrategy
Removes a process from the running list of the instance.- Specified by:
removeRunning
in interfaceIQueueingStrategy
- Parameters:
process
- Process of interest.
-
runningOn
- Specified by:
runningOn
in 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:IQueueingStrategy
Sets 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:
setRunningOn
in interfaceIQueueingStrategy
- Parameters:
process
- Process that shall be executed.instance
- Target instance for the process.
-
forkProcess
- Specified by:
forkProcess
in interfaceIQueueingStrategy
-
registerProcess
- Specified by:
registerProcess
in interfaceIQueueingStrategy
-
fromRunningToWaiting
- Specified by:
fromRunningToWaiting
in interfaceIQueueingStrategy
-
onSleep
- Specified by:
onSleep
in interfaceIQueueingStrategy
-
terminateProcess
- Specified by:
terminateProcess
in interfaceIQueueingStrategy
-
fromWaitingToReady
public void fromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting) - Specified by:
fromWaitingToReady
in interfaceIQueueingStrategy
-
getStarvingProcesses
public List<IActiveProcess> getStarvingProcesses(IResourceInstance instance, double starvationLimit) - Specified by:
getStarvingProcesses
in interfaceIQueueingStrategy
-
resetStarvationInfo
public void resetStarvationInfo()- Specified by:
resetStarvationInfo
in interfaceIQueueingStrategy
-
getQueueLengthFor
- Specified by:
getQueueLengthFor
in interfaceIQueueingStrategy
-