@Override public boolean reduceLoad(ResourceNode node, int loadValue) throws MonitorException { String nodeId = node.getNodeId(); if (this.loadMap.containsKey(nodeId)) { int currLoad = loadMap.get(nodeId); currLoad = Math.min(0, currLoad - loadValue); this.loadMap.put(nodeId, currLoad); } else { this.loadMap.put(nodeId, 0); } return true; }
@Override public int getLoad(ResourceNode node) throws MonitorException { Map<String, String> nodeProperties; String nodeId = node.getNodeId(); nodeProperties = this.locateNode(nodeId); if (nodeProperties == null) { throw new MonitorException("GangliaMonitor: not tracking requested node: [" + nodeId + "]"); } // calculate load double calcLoad = this.loadCalculator.calculateLoad(nodeProperties); System.out.println(calcLoad); int load = Long.valueOf(Math.round(calcLoad)).intValue(); System.out.println("LOAD is: " + load); return load; }
@Override public boolean assignLoad(ResourceNode node, int loadValue) throws MonitorException { // technically this method should simply do nothing, since // putting a job onto a node should cause Ganglia to detect // for now we'll simply track what the current perceived load // on a node is - we may want to factor this into the weighting // in load calculator later String nodeId = node.getNodeId(); if (loadMap.containsKey(nodeId)) { int currLoad = loadMap.get(nodeId); currLoad += loadValue; loadMap.put(nodeId, currLoad); } else { loadMap.put(nodeId, loadValue); } return true; }