org.almendra.janet.ade.distributor
Class DistributorAnchor
java.lang.Object
org.almendra.janet.ade.executor.AbstractAnchor
org.almendra.janet.ade.distributor.DistributorAnchor
public class DistributorAnchor
- extends AbstractAnchor
Method Summary |
void |
acquireReadLock()
|
void |
addWorkstationLoadImage(WorkstationLoadImage image)
|
void |
clearCaches()
|
void |
deregisterWorkstation(java.lang.String workstationName,
java.util.List nodeNames)
|
protected void |
displayQueueSizeCategory(java.lang.String nodeName,
int newQueueSizeCategory)
|
protected void |
displayValue(java.lang.String nodeName,
java.lang.String attribute,
java.lang.String value)
|
boolean |
existsNodeAboveQSC0()
|
AgentPath |
getAgentPathToNode(java.lang.String nodeName,
AgentPath originAgentPath)
|
long |
getAgentsCount(java.lang.String nodeName,
java.lang.String capabilityPath)
|
java.util.Map |
getAgentsQueueSizes(LocalAgentPath localAgentPath)
|
java.util.List |
getAllConnectedNodeNames()
|
java.util.List |
getAllNodesWithCapability(LocalCapabilityPath path,
java.util.List nodeNamestoConsider)
|
java.util.List |
getAllSystemAgents(java.lang.String workstationName)
|
java.util.List |
getAlternativeCapabilitiesOnOtherNodes(java.lang.String workstationName,
java.lang.String nodeName)
|
AgentPath |
getAnyAgent(java.lang.String nodeName,
java.lang.String capabilityPath)
|
protected java.util.List |
getAvailableNodeLoadAtLeastOne(java.util.List nodeImages,
LeastLoadedNodeDecisionInformation decisionInformation)
|
java.util.List |
getAvailableNodeNamesAboveQSC(int qsc)
|
java.util.List |
getAvailableNodeNamesWithQSC0()
|
java.util.List |
getAvailableNodes()
|
java.util.List |
getAvailableNodes(java.lang.String ignoreWorkstationNameOrNull)
|
java.util.List |
getAvailableWorkstations()
|
IAgentProxy |
getBalancerAgent()
|
java.util.List |
getCapabilityIntersection(java.lang.String nodeName1,
java.lang.String nodeName2)
|
int |
getCapabilityQueueSize(java.lang.String nodeName,
LocalCapabilityPath path)
|
int |
getCapabilityQueueSize(java.lang.String nodeName,
java.lang.String qualifiedCapabilityPath)
|
Descriptor |
getDescriptor()
|
CapabilityQueueSizeStore |
getExecutingQueuesStore()
|
java.lang.String |
getHeaviestLoadedCapability(java.lang.String nodeNameHeaviestLoaded,
java.util.List capabilityPathNames,
NodeDroppedToQSC1DecisionInformation decisionInformation)
|
java.lang.String |
getHeaviestLoadedCapabilityPath(java.lang.String nodeName,
java.util.List capabilities)
|
protected java.lang.String |
getHeaviestLoadedNodeName(java.util.Set allCandidateNodes,
java.util.Map capabilitiesByCandidateNodeName,
java.util.List heaviestLoadedCapabilityPaths,
NodeDroppedToQSC1DecisionInformation decisionInformation)
|
java.lang.String |
getLastSelectedSharingNode()
|
java.lang.String |
getLastSelectNodeName()
|
java.util.List |
getLeastLoadedCapabilitiesAtLeastOne(java.util.List nodeNamesOfNodesWithCapability,
LocalCapabilityPath path,
LeastLoadedNodeDecisionInformation decisionInformation)
|
protected java.util.List |
getLeastLoadedNodes(java.util.List availableNodeLoadImages,
LocalCapabilityPath path,
LeastLoadedNodeDecisionInformation decisionInformation)
|
IAgentProxy |
getLoadAdministratorAgent()
|
Logger |
getLogger()
|
Node |
getNode()
|
protected java.util.List |
getNodeImages(java.util.List nodeNames)
|
NodeLoadImage |
getNodeLoadImage(java.lang.String nodeName)
|
java.lang.String |
getNodeNameToEvictCommandFrom(java.lang.String nodeNameToMigrateTo,
java.util.List nodeNamesAboveQSC1,
java.util.List capabilities,
NodeDroppedToQSC1DecisionInformation decisionInformation)
|
protected int |
getNodeQueueSizeCategory(java.lang.String nodeName)
|
int |
getQueueSizeCategory(java.lang.String nodeName)
|
protected long |
getSharingDelay()
|
CapabilityQueueSizeStore |
getWaitingQueuesStore()
|
protected java.util.List |
getWorkstationImages(java.util.List nodeNames)
|
WorkstationLoadImage |
getWorkstationLoadImage(java.lang.String workstationName)
|
java.util.List |
getWorkstationNames()
|
protected int |
getWorkstationQueueSizeCategoryProduct(java.lang.String nodeName)
|
boolean |
hasWorkstations()
|
boolean |
isDisableEviction()
|
boolean |
isDisableFullEviction()
|
boolean |
isDisableNodeDroppedToQSC1()
|
boolean |
isDisableNodesWithQSC0Exist()
|
boolean |
isDisablePartialEviction()
|
void |
logCommandDistributed(ExecuteWorkloadCommand command,
AgentPath originAgentPath,
AgentPath selectedAgentPath)
|
protected void |
registerForEvents()
|
void |
registerWorkstation(java.lang.String workstationName,
java.util.List nodeNames)
|
void |
releaseReadLock()
|
void |
setDescriptor(Descriptor descriptor)
|
void |
setIsAboveThreshold(java.lang.String workstationName,
boolean isAboveThreshold,
int nonJanetCPULoad)
|
void |
setLastSelectedSharingNode(java.lang.String nodeName)
|
void |
setLastSelectNodeName(java.lang.String lastSelectNodeName)
|
protected void |
setLogger(Logger parentLogger)
|
void |
setNewNodeValues(java.lang.String nodeName,
int newQueueSizeCategory,
long waitingTime,
java.util.Map waitingQueuesByCapability,
java.util.Map executingQueuesByCapability)
|
int |
setNewNonJanetCPULoad(java.lang.String workstationName,
int nonJanetCPULoad)
|
void |
setNonJanetCPULoad(java.lang.String workstationName,
int nonJanetCPULoad)
|
boolean |
writeProtectedDo(IExecutable executable)
|
Methods inherited from class org.almendra.janet.ade.executor.AbstractAnchor |
clearAgentsCache, getAgents, getAgentsList, getAgentsMap, getCrossAgent, getDistributorAgent, getDistributorAgent, getDistributorAgentUnprotected, getHandlers, getLoadAdministratorAgents, getSystemApplication, logNoDistributorAgentFound, registeredLogEvents |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NODE_LABEL
public static final java.lang.String NODE_LABEL
- See Also:
- Constant Field Values
NODE_VIEW_PREFIX
public static final java.lang.String NODE_VIEW_PREFIX
- See Also:
- Constant Field Values
LABEL
public static final java.lang.String LABEL
- See Also:
- Constant Field Values
CAPABILITY_NAME
public static final java.lang.String CAPABILITY_NAME
- See Also:
- Constant Field Values
BALANCING_AGENT_NAME
public static final java.lang.String BALANCING_AGENT_NAME
- See Also:
- Constant Field Values
SHARING_AGENT_NAME
public static final java.lang.String SHARING_AGENT_NAME
- See Also:
- Constant Field Values
LOAD_ADMINISTRATOR_AGENT_NAME
public static final java.lang.String LOAD_ADMINISTRATOR_AGENT_NAME
- See Also:
- Constant Field Values
BILLBOARD_ATTRIBUTE_QUEUE_SIZE_CATEGORY
public static final java.lang.String BILLBOARD_ATTRIBUTE_QUEUE_SIZE_CATEGORY
- See Also:
- Constant Field Values
BILLBOARD_ATTRIBUTE_COMMANDS_WAITING_TIME
public static final java.lang.String BILLBOARD_ATTRIBUTE_COMMANDS_WAITING_TIME
- See Also:
- Constant Field Values
LOG_EVENT_SHARING_COMMAND_DISTRIBUTED
public static final java.lang.String LOG_EVENT_SHARING_COMMAND_DISTRIBUTED
- See Also:
- Constant Field Values
LOG_EVENT_BALANCING_COMMAND_DISTRIBUTED
public static final java.lang.String LOG_EVENT_BALANCING_COMMAND_DISTRIBUTED
- See Also:
- Constant Field Values
LOG_EVENT_PANIC_CANNOT_FIND_ANY_AGENT
public static final java.lang.String LOG_EVENT_PANIC_CANNOT_FIND_ANY_AGENT
- See Also:
- Constant Field Values
workstationLoadImages
protected java.util.Map workstationLoadImages
imagesLock
protected EDU.oswego.cs.dl.util.concurrent.ReentrantWriterPreferenceReadWriteLock imagesLock
logger
protected Logger logger
lastSelectedSharingNodeName
protected java.lang.String lastSelectedSharingNodeName
lastSelectedSharingNodeNameTime
protected long lastSelectedSharingNodeNameTime
descriptor
protected Descriptor descriptor
node
protected Node node
billboardMasks
protected java.util.Map billboardMasks
loadAdministratorAgent
protected IAgentProxy loadAdministratorAgent
balancerAgent
protected IAgentProxy balancerAgent
waitingQueuesStore
protected CapabilityQueueSizeStore waitingQueuesStore
executingQueuesStore
protected CapabilityQueueSizeStore executingQueuesStore
agentsCountByCapability
protected java.util.Map agentsCountByCapability
workstationLoadImageByNodeName
protected java.util.Map workstationLoadImageByNodeName
lastSelectNodeName
protected java.lang.String lastSelectNodeName
DistributorAnchor
protected DistributorAnchor()
- Creates a new
DistributorAnchor
object.
DistributorAnchor
public DistributorAnchor(Node node,
Logger parentLogger)
- Creates a new
DistributorAnchor
object.
registerForEvents
protected void registerForEvents()
setLogger
protected void setLogger(Logger parentLogger)
- Parameters:
parentLogger
-
getLastSelectedSharingNode
public java.lang.String getLastSelectedSharingNode()
- Parameters:
i
-
- Returns:
setLastSelectedSharingNode
public void setLastSelectedSharingNode(java.lang.String nodeName)
- Parameters:
string
-
setDescriptor
public void setDescriptor(Descriptor descriptor)
- Parameters:
desc
-
getSharingDelay
protected long getSharingDelay()
getAvailableNodes
public java.util.List getAvailableNodes()
getAvailableNodes
public java.util.List getAvailableNodes(java.lang.String ignoreWorkstationNameOrNull)
getAvailableWorkstations
public java.util.List getAvailableWorkstations()
- Returns:
addWorkstationLoadImage
public void addWorkstationLoadImage(WorkstationLoadImage image)
displayQueueSizeCategory
protected void displayQueueSizeCategory(java.lang.String nodeName,
int newQueueSizeCategory)
- Parameters:
nodeName
- newQueueSizeCategory
-
displayValue
protected void displayValue(java.lang.String nodeName,
java.lang.String attribute,
java.lang.String value)
- Parameters:
nodeName
- newQueueSizeCategory
-
getQueueSizeCategory
public int getQueueSizeCategory(java.lang.String nodeName)
getWorkstationLoadImage
public WorkstationLoadImage getWorkstationLoadImage(java.lang.String workstationName)
getNodeLoadImage
public NodeLoadImage getNodeLoadImage(java.lang.String nodeName)
getAgentsQueueSizes
public java.util.Map getAgentsQueueSizes(LocalAgentPath localAgentPath)
- Parameters:
localAgentPath
-
- Returns:
getWorkstationQueueSizeCategoryProduct
protected int getWorkstationQueueSizeCategoryProduct(java.lang.String nodeName)
- Parameters:
string
-
- Returns:
getNodeQueueSizeCategory
protected int getNodeQueueSizeCategory(java.lang.String nodeName)
- Parameters:
string
-
- Returns:
setNonJanetCPULoad
public void setNonJanetCPULoad(java.lang.String workstationName,
int nonJanetCPULoad)
- Parameters:
string
- i
-
setIsAboveThreshold
public void setIsAboveThreshold(java.lang.String workstationName,
boolean isAboveThreshold,
int nonJanetCPULoad)
- Parameters:
string
- i
-
setNewNonJanetCPULoad
public int setNewNonJanetCPULoad(java.lang.String workstationName,
int nonJanetCPULoad)
- Parameters:
string
- i
-
setNewNodeValues
public void setNewNodeValues(java.lang.String nodeName,
int newQueueSizeCategory,
long waitingTime,
java.util.Map waitingQueuesByCapability,
java.util.Map executingQueuesByCapability)
- Parameters:
string
- currentQueueSizeCategory
- currentCommandsWaitingTime
-
getBalancerAgent
public IAgentProxy getBalancerAgent()
- Returns:
- Returns the loadAdministratorAgent.
getLoadAdministratorAgent
public IAgentProxy getLoadAdministratorAgent()
- Returns:
- Returns the loadAdministratorAgent.
getNode
public Node getNode()
- Returns:
- Returns the node.
getLogger
public Logger getLogger()
- Overrides:
getLogger
in class AbstractAnchor
- Returns:
- Returns the logger.
writeProtectedDo
public boolean writeProtectedDo(IExecutable executable)
getAllSystemAgents
public java.util.List getAllSystemAgents(java.lang.String workstationName)
- Parameters:
workstationName
-
- Returns:
getExecutingQueuesStore
public CapabilityQueueSizeStore getExecutingQueuesStore()
- Returns:
- Returns the executingQueuesStore.
getWaitingQueuesStore
public CapabilityQueueSizeStore getWaitingQueuesStore()
- Returns:
- Returns the waitingQueuesStore.
getAgentsCount
public long getAgentsCount(java.lang.String nodeName,
java.lang.String capabilityPath)
- Parameters:
nodeName
- capabilityPath
-
- Returns:
clearCaches
public void clearCaches()
registerWorkstation
public void registerWorkstation(java.lang.String workstationName,
java.util.List nodeNames)
- Parameters:
string
-
deregisterWorkstation
public void deregisterWorkstation(java.lang.String workstationName,
java.util.List nodeNames)
- Parameters:
string
-
getAllNodesWithCapability
public java.util.List getAllNodesWithCapability(LocalCapabilityPath path,
java.util.List nodeNamestoConsider)
- Parameters:
string
- string2
-
- Returns:
getLeastLoadedCapabilitiesAtLeastOne
public java.util.List getLeastLoadedCapabilitiesAtLeastOne(java.util.List nodeNamesOfNodesWithCapability,
LocalCapabilityPath path,
LeastLoadedNodeDecisionInformation decisionInformation)
- Parameters:
nodeNames
-
- Returns:
getLeastLoadedNodes
protected java.util.List getLeastLoadedNodes(java.util.List availableNodeLoadImages,
LocalCapabilityPath path,
LeastLoadedNodeDecisionInformation decisionInformation)
- Parameters:
availableNodeLoadImages
- path
-
- Returns:
- node name of least loaded node for capability
getAvailableNodeLoadAtLeastOne
protected java.util.List getAvailableNodeLoadAtLeastOne(java.util.List nodeImages,
LeastLoadedNodeDecisionInformation decisionInformation)
- Parameters:
nodeImages
-
- Returns:
getNodeImages
protected java.util.List getNodeImages(java.util.List nodeNames)
- Parameters:
nodeNames
-
- Returns:
getWorkstationImages
protected java.util.List getWorkstationImages(java.util.List nodeNames)
- Parameters:
nodeNames
-
- Returns:
getAgentPathToNode
public AgentPath getAgentPathToNode(java.lang.String nodeName,
AgentPath originAgentPath)
- Parameters:
leastLoadedNodeForCapability
- originAgentPath
-
- Returns:
logCommandDistributed
public void logCommandDistributed(ExecuteWorkloadCommand command,
AgentPath originAgentPath,
AgentPath selectedAgentPath)
- Parameters:
command
- path
- selectedAgentPath
-
getCapabilityQueueSize
public int getCapabilityQueueSize(java.lang.String nodeName,
java.lang.String qualifiedCapabilityPath)
- Parameters:
nodeName
- path
-
- Returns:
getCapabilityQueueSize
public int getCapabilityQueueSize(java.lang.String nodeName,
LocalCapabilityPath path)
- Parameters:
nodeName
- path
-
- Returns:
getAlternativeCapabilitiesOnOtherNodes
public java.util.List getAlternativeCapabilitiesOnOtherNodes(java.lang.String workstationName,
java.lang.String nodeName)
- Parameters:
string
- nodeName
-
- Returns:
getAvailableNodeNamesWithQSC0
public java.util.List getAvailableNodeNamesWithQSC0()
- Returns:
getCapabilityIntersection
public java.util.List getCapabilityIntersection(java.lang.String nodeName1,
java.lang.String nodeName2)
- Parameters:
nodeNameAboveQSC1
- nodeNameWithQSC0
-
- Returns:
getNodeNameToEvictCommandFrom
public java.lang.String getNodeNameToEvictCommandFrom(java.lang.String nodeNameToMigrateTo,
java.util.List nodeNamesAboveQSC1,
java.util.List capabilities,
NodeDroppedToQSC1DecisionInformation decisionInformation)
- Parameters:
nodeNameToMigrateTo
- name of node to migrate command tocapabilities
-
- Returns:
- name of node to evict command from
getHeaviestLoadedNodeName
protected java.lang.String getHeaviestLoadedNodeName(java.util.Set allCandidateNodes,
java.util.Map capabilitiesByCandidateNodeName,
java.util.List heaviestLoadedCapabilityPaths,
NodeDroppedToQSC1DecisionInformation decisionInformation)
- Parameters:
allCandidateNodes
- capabilitiesByCandidateNodeName
-
- Returns:
getAnyAgent
public AgentPath getAnyAgent(java.lang.String nodeName,
java.lang.String capabilityPath)
- Parameters:
nodeNameDroppedToQSC1
- capabilityPath
-
- Returns:
getHeaviestLoadedCapabilityPath
public java.lang.String getHeaviestLoadedCapabilityPath(java.lang.String nodeName,
java.util.List capabilities)
- Parameters:
nodeNameAboveQSC1
- capabilitiesIntersection
-
- Returns:
getAllConnectedNodeNames
public java.util.List getAllConnectedNodeNames()
getAvailableNodeNamesAboveQSC
public java.util.List getAvailableNodeNamesAboveQSC(int qsc)
existsNodeAboveQSC0
public boolean existsNodeAboveQSC0()
- Returns:
isDisableEviction
public boolean isDisableEviction()
- Returns:
getLastSelectNodeName
public java.lang.String getLastSelectNodeName()
- Returns:
- Returns the lastSelectedNodeName.
setLastSelectNodeName
public void setLastSelectNodeName(java.lang.String lastSelectNodeName)
- Parameters:
lastSelectedNodeName
- The lastSelectedNodeName to set.
getHeaviestLoadedCapability
public java.lang.String getHeaviestLoadedCapability(java.lang.String nodeNameHeaviestLoaded,
java.util.List capabilityPathNames,
NodeDroppedToQSC1DecisionInformation decisionInformation)
- Parameters:
nodeNameHeaviestLoaded
- capabilities
-
- Returns:
acquireReadLock
public void acquireReadLock()
throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
releaseReadLock
public void releaseReadLock()
isDisableFullEviction
public boolean isDisableFullEviction()
- Returns:
isDisableNodeDroppedToQSC1
public boolean isDisableNodeDroppedToQSC1()
- Returns:
isDisableNodesWithQSC0Exist
public boolean isDisableNodesWithQSC0Exist()
- Returns:
isDisablePartialEviction
public boolean isDisablePartialEviction()
- Returns:
getDescriptor
public Descriptor getDescriptor()
- Returns:
- Returns the descriptor.
hasWorkstations
public boolean hasWorkstations()
- Returns:
getWorkstationNames
public java.util.List getWorkstationNames()
- Returns: