You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2016/03/04 21:19:22 UTC

svn commit: r1733648 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main: java/org/apache/uima/ducc/ws/ java/org/apache/uima/ducc/ws/server/ webapp/root/

Author: degenaro
Date: Fri Mar  4 20:19:21 2016
New Revision: 1733648

URL: http://svn.apache.org/viewvc?rev=1733648&view=rev
Log:
UIMA-4815 DUCC Web Server (WS) System Machines page re-imagined

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/system.machines.jsp

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java?rev=1733648&r1=1733647&r2=1733648&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java Fri Mar  4 20:19:21 2016
@@ -30,7 +30,9 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.uima.ducc.cli.ws.json.MachineFacts;
 import org.apache.uima.ducc.cli.ws.json.MachineFactsList;
 import org.apache.uima.ducc.cli.ws.json.NodePidList;
+import org.apache.uima.ducc.common.ConvertSafely;
 import org.apache.uima.ducc.common.IDuccEnv;
+import org.apache.uima.ducc.common.Node;
 import org.apache.uima.ducc.common.node.metrics.NodeUsersInfo;
 import org.apache.uima.ducc.common.node.metrics.NodeUsersInfo.NodeProcess;
 import org.apache.uima.ducc.common.utils.DuccLogger;
@@ -123,7 +125,8 @@ public class DuccMachinesData {
 				String memFree = "";
 				String swapInuse = "";
 				String swapFree = "";
-				MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memFree, swapInuse, swapFree, false, null, -1, 0);
+				double cpu = 0;
+				MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memFree, swapInuse, swapFree, cpu, false, null, -1, 0);
 				Ip machineIP = new Ip(machineInfo.getIp());
 				unsortedMachines.put(machineIP,machineInfo);
 			}
@@ -168,7 +171,22 @@ public class DuccMachinesData {
 			swapFree.addAndGet(newInfo.swapFree);
 		}
 	}
-		
+	
+	private double getCpu(Node node) {
+		String location = "getCpu";
+		double cpu = 0;
+		try {
+			if(node != null) {
+				String load = node.getNodeMetrics().getNodeCpu().getCurrentLoad();
+				cpu = ConvertSafely.String2Double(load);
+			}
+		}
+		catch(Exception e) {
+			logger.debug(location, jobid, e);
+		}
+		return cpu;
+	}
+	
 	public void put(DatedNodeMetricsUpdateDuccEvent duccEvent) {
 		String location = "put";
 		MachineSummaryInfo msi = new MachineSummaryInfo();
@@ -214,8 +232,10 @@ public class DuccMachinesData {
 		msi.swapFree = lvalSwapFree;
 		String swapFree = ""+lvalSwapFree/*+memUnits*/;
 		List<ProcessInfo> alienPids = nodeMetrics.getRogueProcessInfoList();
+		Node node = nodeMetrics.getNode();
+		double cpu = getCpu(node);
 		boolean cGroups = nodeMetrics.getCgroups();
-		MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memFree, ""+swapInuse, ""+swapFree, cGroups, alienPids, duccEvent.getMillis(), duccEvent.getEventSize());
+		MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memFree, ""+swapInuse, ""+swapFree, cpu, cGroups, alienPids, duccEvent.getMillis(), duccEvent.getEventSize());
 		
 		Ip key = ip;
 		MachineInfo previous = unsortedMachines.get(key);
@@ -372,10 +392,11 @@ public class DuccMachinesData {
 			String swapInuse = machineInfo.getSwapInuse();
 			String swapDelta = ""+machineInfo.getSwapDelta();
 			String swapFree = machineInfo.getSwapFree();
+			double cpu = machineInfo.getCpu();
 			boolean cGroups = machineInfo.getCgroups();
 			List<String> aliens = machineInfo.getAliens();
 			String heartbeat = ""+machineInfo.getElapsed();
-			MachineFacts facts = new MachineFacts(status,ip,name,memTotal,memFree,swapInuse,swapDelta,swapFree,cGroups,aliens,heartbeat);
+			MachineFacts facts = new MachineFacts(status,ip,name,memTotal,memFree,swapInuse,swapDelta,swapFree,cpu,cGroups,aliens,heartbeat);
 			enhance(facts,dbMachineMap);
 			factsList.add(facts);
 		}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java?rev=1733648&r1=1733647&r2=1733648&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java Fri Mar  4 20:19:21 2016
@@ -46,6 +46,7 @@ public class MachineInfo implements Comp
 	private String memFree;
 	private String swapInuse;
 	private String swapFree;
+	private double cpu;
 	private boolean cGroups;
 	private List<ProcessInfo> alienPids;
 	private long swapDelta;
@@ -55,7 +56,7 @@ public class MachineInfo implements Comp
 	private long pubSize;
 	private long pubSizeMax;
 	
-	public MachineInfo(String fileDef, String ip, String name, String memTotal, String memFree, String swapInuse, String swapFree, boolean cGroups, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
+	public MachineInfo(String fileDef, String ip, String name, String memTotal, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroups, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
 		this.fileDef = fileDef;
 		this.ip = ip;
 		this.name = name;
@@ -63,6 +64,7 @@ public class MachineInfo implements Comp
 		this.memFree = memFree;
 		this.swapInuse = swapInuse;
 		this.swapFree = swapFree;
+		this.cpu = cpu;
 		this.cGroups = cGroups;
 		this.alienPids = alienPids;
 		if(this.alienPids == null) {
@@ -143,6 +145,10 @@ public class MachineInfo implements Comp
 		return this.swapFree;
 	}
 	
+	public double getCpu() {
+		return cpu;
+	}
+	
 	public boolean getCgroups() {
 		return this.cGroups;
 	}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1733648&r1=1733647&r2=1733648&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Fri Mar  4 20:19:21 2016
@@ -1596,6 +1596,8 @@ public class DuccHandlerClassic extends
 		long sumMemTotal = 0;
 		long sumMemFree = 0;
 		long sumMemReserve = 0;
+		double sumCPU = 0;
+		long sumMachines = 0;
 		long sumSwapInuse = 0;
 		long sumSwapFree = 0;
 		long sumAliens = 0;
@@ -1610,15 +1612,21 @@ public class DuccHandlerClassic extends
 			listIterator = factsList.listIterator();
 			while(listIterator.hasNext()) {
 				MachineFacts facts = listIterator.next();
-				try {
-					sumMemTotal += ConvertSafely.String2Long(facts.memTotal);
-					sumMemReserve += ConvertSafely.String2Long(facts.memReserve);
-					sumSwapInuse += ConvertSafely.String2Long(facts.swapInuse);
-					sumSwapFree += ConvertSafely.String2Long(facts.swapFree);
-					sumAliens += facts.aliens.size();
-				}
-				catch(Exception e) {
-					duccLogger.trace(methodName, jobid, e);
+				if(facts.status != null) {
+					if(facts.status.equals("up")) {
+						try {
+							sumMemTotal += ConvertSafely.String2Long(facts.memTotal);
+							sumMemReserve += ConvertSafely.String2Long(facts.memReserve);
+							sumSwapInuse += ConvertSafely.String2Long(facts.swapInuse);
+							sumSwapFree += ConvertSafely.String2Long(facts.swapFree);
+							sumCPU += facts.cpu;
+							sumMachines += 1;
+							sumAliens += facts.aliens.size();
+						}
+						catch(Exception e) {
+							duccLogger.trace(methodName, jobid, e);
+						}
+					}
 				}
 			}
 			//
@@ -1657,6 +1665,11 @@ public class DuccHandlerClassic extends
 			row.append("<td align=\"right\">");
 			row.append(""+sumMemFree);
 			row.append("</td>");
+			// CPU: load average
+			row.append("<td align=\"right\">");
+			String cpuTotal = formatter3.format(sumCPU/sumMachines);
+			row.append(cpuTotal);
+			row.append("</td>");
 			// Swap: inuse
 			row.append("<td align=\"right\">");
 			row.append(""+sumSwapInuse);
@@ -1753,6 +1766,15 @@ public class DuccHandlerClassic extends
 					row.append("<td align=\"right\">");
 					row.append("</td>");
 				}
+				// CPU: load average
+				row.append("<td>");
+				if(facts.status != null) {
+					if(facts.status.equals("up")) {
+						String cpu = formatter3.format(facts.cpu);
+						row.append(cpu);
+					}
+				}
+				row.append("</td>");
 				// Swap: inuse
 				sb = new StringBuffer();
 				String swapping = facts.swapInuse;

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1733648&r1=1733647&r2=1733648&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Fri Mar  4 20:19:21 2016
@@ -1408,6 +1408,8 @@ public class DuccHandlerJsonFormat exten
 		long sumMemTotal = 0;
 		long sumMemFree = 0;
 		long sumMemReserve = 0;
+		double sumCPU = 0;
+		long sumMachines = 0;
 		long sumSwapInuse = 0;
 		long sumSwapFree = 0;
 		long sumAliens = 0;
@@ -1421,16 +1423,22 @@ public class DuccHandlerJsonFormat exten
 			listIterator = factsList.listIterator();
 			while(listIterator.hasNext()) {
 				MachineFacts facts = listIterator.next();
-				try {
-					sumMemTotal += ConvertSafely.String2Long(facts.memTotal);
-					sumMemReserve += ConvertSafely.String2Long(facts.memReserve);
-					sumSwapInuse += ConvertSafely.String2Long(facts.swapInuse);
-					sumSwapFree += ConvertSafely.String2Long(facts.swapFree);
-					sumAliens += facts.aliens.size();
-				}
-				catch(Exception e) {
-					duccLogger.trace(methodName, jobid, e);
-				}
+				if(facts.status != null) {
+					if(facts.status.equals("up")) {
+						try {
+							sumMemTotal += ConvertSafely.String2Long(facts.memTotal);
+							sumMemReserve += ConvertSafely.String2Long(facts.memReserve);
+							sumSwapInuse += ConvertSafely.String2Long(facts.swapInuse);
+							sumSwapFree += ConvertSafely.String2Long(facts.swapFree);
+							sumCPU += facts.cpu;
+							sumMachines += 1;
+							sumAliens += facts.aliens.size();
+						}
+						catch(Exception e) {
+							duccLogger.trace(methodName, jobid, e);
+						}
+					}
+				}				
 			}
 			//
 			Map<String, Long> allocatedMap = Distiller.getMap();
@@ -1456,6 +1464,9 @@ public class DuccHandlerJsonFormat exten
 			row.add(new JsonPrimitive(sumMemReserveWithHover));
 			// Memory: free
 			row.add(new JsonPrimitive(sumMemFree));
+			// CPU: load average
+			String cpuTotal = formatter3.format(sumCPU/sumMachines);
+			row.add(new JsonPrimitive(cpuTotal));
 			// Swap: inuse
 			row.add(new JsonPrimitive(sumSwapInuse));
 			// Swap: free
@@ -1526,6 +1537,14 @@ public class DuccHandlerJsonFormat exten
 				}
 				else {
 					row.add(new JsonPrimitive(""));
+				}
+				// CPU: load average
+				if(!status.equals("defined")) {
+					String cpu = formatter3.format(facts.cpu);
+					row.add(new JsonPrimitive(cpu));
+				}
+				else {
+					row.add(new JsonPrimitive(""));
 				}
 				// Swap: inuse
 				sb = new StringBuffer();

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/system.machines.jsp
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/system.machines.jsp?rev=1733648&r1=1733647&r2=1733648&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/system.machines.jsp (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/system.machines.jsp Fri Mar  4 20:19:21 2016
@@ -46,6 +46,7 @@ under the License.
                             $('td:eq(8)' , nRow).css( "text-align", "right" );   
 							$('td:eq(9)' , nRow).css( "text-align", "right" ); 
 							$('td:eq(10)' , nRow).css( "text-align", "right" );
+							$('td:eq(11)' , nRow).css( "text-align", "right" );
                             return nRow;
 			},
 		} );
@@ -107,6 +108,7 @@ if (table_style.equals("scroll")) {
 	<th align="left" title="The host node pool">Nodepool</th>
 	<th align="left" title="The host usable memory size, in GB" >Memory(GB):usable</th>
 	<th align="left" title="The host free memory size, in GB" >Memory(GB):free</th>
+	<th align="left" title="The host CPU load average" >%CPU</th>
 	<th align="left" title="The host inuse swap size, in GB" >Swap(GB):inuse</th>
 	<th align="left" title="The host free swap size, in GB" >Swap(GB):free</th>
 	<th align="left" title="The host C-Groups status" >C-Groups</th>
@@ -136,6 +138,7 @@ if (table_style.equals("classic")) {
 		<th align="left" title="The host node pool">Nodepool</th>
 		<th class="sorttable_numeric" align="left" title="The host usable memory size, in GB" >Memory(GB):usable</th>
 		<th class="sorttable_numeric" align="left" title="The host free memory size, in GB" >Memory(GB):free</th>
+		<th class="sorttable_numeric" align="left" title="The host CPU load average" >%CPU</th>
 		<th class="sorttable_numeric" align="left" title="The host inuse swap size, in GB" >Swap(GB):inuse</th>
 		<th class="sorttable_numeric" align="left" title="The host free swap size, in GB" >Swap(GB):free</th>
 		<th align="left" title="The host C-Groups status" >C-Groups</th>