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/11/14 18:58:30 UTC

svn commit: r1769676 - in /uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws: DuccMachinesData.java MachineInfo.java server/nodeviz/Markup.java server/nodeviz/NodeViz.java server/nodeviz/VisualizedHost.java

Author: degenaro
Date: Mon Nov 14 18:58:30 2016
New Revision: 1769676

URL: http://svn.apache.org/viewvc?rev=1769676&view=rev
Log:
UIMA-5181 DUCC Web Server (WS) Viz should display actual and schedulable sizes in concordance with Machines page

Modified:
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/Markup.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/NodeViz.java
    uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/VisualizedHost.java

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java?rev=1769676&r1=1769675&r2=1769676&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java Mon Nov 14 18:58:30 2016
@@ -244,11 +244,12 @@ public class DuccMachinesData {
 			while(iterator.hasNext()) {
 				String nodeName = (String) iterator.next();
 				String memTotal = "";
+				String memReserve = "";
 				String memFree = "";
 				String swapInuse = "";
 				String swapFree = "";
 				double cpu = 0;
-				MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memFree, swapInuse, swapFree, cpu, false, false, null, -1, 0);
+				MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, false, false, null, -1, 0);
 				putMachine(machineInfo);
 			}
 			updateSortedMachines();
@@ -365,6 +366,8 @@ public class DuccMachinesData {
 		long lvalMemTotal = (long) ((1.0*nodeMemTotal)/(1024*1024)+0.5);
 		msi.memTotal = lvalMemTotal;
 		String memTotal = ""+lvalMemTotal/*+memUnits*/;
+		// mem: reserve
+		String memReserve = memTotal;
 		// mem: free
 		long nodeMemFree = nodeMetrics.getNodeMemory().getMemFree();
 		logger.debug(location, jobid, "node: "+machineName+" "+"memFree: "+nodeMemFree);
@@ -395,7 +398,7 @@ public class DuccMachinesData {
 		double cpu = getCpuLoadAvg(node);
 		boolean cGroupsEnabled = nodeMetrics.getCgroups();
 		boolean cGroupsCpuReportingEnabled = nodeMetrics.getCgroupsCpuReportingEnabled();
-		MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memFree, ""+swapInuse, ""+swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, duccEvent.getMillis(), duccEvent.getEventSize());
+		MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memReserve, memFree, ""+swapInuse, ""+swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, duccEvent.getMillis(), duccEvent.getEventSize());
 		
 		NodeId key = nodeId;
 		MachineInfo previous = unsortedMachines.get(key);
@@ -650,9 +653,9 @@ public class DuccMachinesData {
 			IDbMachine dbMachine = entry.getValue();
 			if(mi != null) {
 				int quantum = dbMachine.getQuantum();
-				int total = quantum*dbMachine.getShareOrder();
+				int reserve = quantum*dbMachine.getShareOrder();
 				int free = quantum*dbMachine.getSharesLeft();
-				mi.setMemTotal(""+total);
+				mi.setMemReserve(""+reserve);
 				mi.setMemFree(""+free);
 				dbSortedMachines.put(mi, nodeId);
 			}

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java?rev=1769676&r1=1769675&r2=1769676&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java Mon Nov 14 18:58:30 2016
@@ -48,6 +48,7 @@ public class MachineInfo implements Comp
 	private String ip;
 	private String name;
 	private String memTotal;
+	private String memReserve;
 	private String memFree;
 	private String swapInuse;
 	private String swapFree;
@@ -71,20 +72,21 @@ public class MachineInfo implements Comp
 	
 	private NodeId nodeid;
 	
-	public MachineInfo(String fileDef, String ip, String name, String memTotal, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
-		init(MachineStatus.Defined, fileDef, ip, name, memTotal, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
+	public MachineInfo(String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
+		init(MachineStatus.Defined, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
 	}
 	
-	public MachineInfo(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
-		init(machineStatus, fileDef, ip, name, memTotal, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
+	public MachineInfo(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
+		init(machineStatus, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
 	}
 	
-	private void init(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
+	private void init(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
 		this.machineStatus = machineStatus;
 		this.fileDef = fileDef;
 		this.ip = ip;
 		this.name = name;
 		this.memTotal = memTotal;
+		this.memReserve = memReserve;
 		this.memFree = memFree;
 		this.swapInuse = swapInuse;
 		this.swapFree = swapFree;
@@ -275,6 +277,14 @@ public class MachineInfo implements Comp
 		return this.memTotal;
 	}
 	
+	public void setMemReserve(String value) {
+		this.memReserve = value;
+	}
+	
+	public String getMemReserve() {
+		return this.memReserve;
+	}
+	
 	public void setMemFree(String value) {
 		this.memFree = value;
 	}

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/Markup.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/Markup.java?rev=1769676&r1=1769675&r2=1769676&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/Markup.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/Markup.java Mon Nov 14 18:58:30 2016
@@ -197,7 +197,7 @@ public class Markup
                 out.append("GB on host ");
                 out.append(h.name); 
                 out.append("(");
-                out.append(h.mem); 
+                out.append(h.mem_reserve); 
                 out.append("GB)</title>");
                 break;
             case Reservation:
@@ -220,7 +220,7 @@ public class Markup
                 out.append("GB) on ");
                 out.append(h.name); 
                 out.append("(");
-                out.append(h.mem);
+                out.append(h.mem_reserve);
                 out.append("GB)</title>");
                 break;
         }

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/NodeViz.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/NodeViz.java?rev=1769676&r1=1769675&r2=1769676&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/NodeViz.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/NodeViz.java Mon Nov 14 18:58:30 2016
@@ -377,8 +377,8 @@ public class NodeViz
         {
             if ( h1 == h2 ) return 0;
             if ( h1.equals(h2) ) return 0;       
-            if ( h2.mem == h1.mem ) return h1.name.compareTo(h2.name);
-            return h2.mem - h1.mem;
+            if ( h2.mem_reserve == h1.mem_reserve ) return h1.name.compareTo(h2.name);
+            return h2.mem_reserve - h1.mem_reserve;
         }
     }
 

Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/VisualizedHost.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/VisualizedHost.java?rev=1769676&r1=1769675&r2=1769676&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/VisualizedHost.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/nodeviz/VisualizedHost.java Mon Nov 14 18:58:30 2016
@@ -36,18 +36,15 @@ class VisualizedHost
 	private static DuccLogger logger = DuccLoggerComponents.getWsLogger(VisualizedHost.class.getName());
     private static FragmentSorter sorter = new FragmentSorter();
 
-    // TODO:
-    //   Some goodies - aliens, swap, heartbeat info, pubsize, expired, status
     String name;        // host name
     String ip;          // host ip
-    int mem;            // actual mem as reported by agent
-    int shares;         // q shares available on this host (constant)
-
-    int shares_free;    // shares not used by jobs
-    int mem_reservable; // schedulable (reservable) memory on this hosts
-
+    int mem_total;      // actual mem as reported by agent
+    int mem_reserve;    // schedulable memory on this host, unused + used
+    int mem_free;       // schedulable memory on this host, unused
     int quantum;        // RM scheduling quantum
-
+    int shares_reserve; // shares on this host, unused + used
+    int shares_free;    // shares on this host, unused
+    
     List<JobFragment>  fragments = new ArrayList<JobFragment>();
 
     /**
@@ -60,11 +57,10 @@ class VisualizedHost
         this.ip = n.getNodeIdentity().getIp();            
         
         // mem from OR pub is in KB.  must convert to GB
-        this.mem =  (int) n.getNodeMetrics().getNodeMemory().getMemFree() / ( 1024 * 1024 );
-
-        this.shares = (mem / quantum);
-        this.shares_free = shares;
-        this.mem_reservable = shares * quantum;
+        this.mem_total =  (int) n.getNodeMetrics().getNodeMemory().getMemFree() / ( 1024 * 1024 );
+        this.shares_reserve = (mem_total / quantum);
+        this.shares_free = shares_reserve;
+        this.mem_reserve = shares_reserve * quantum;
     }
 
     /**
@@ -76,21 +72,20 @@ class VisualizedHost
         this.quantum = quantum;
         this.name = NodeViz.strip(info.getName());
         this.ip = info.getIp();
-
-        this.mem = Integer.parseInt(info.getMemFree());
-        this.shares = (mem / quantum);
-        this.mem_reservable = shares * quantum;
-        this.shares_free = shares;        
+        this.mem_total = Integer.parseInt(info.getMemTotal());
+        this.mem_reserve = Integer.parseInt(info.getMemReserve());
+        this.shares_reserve = (mem_reserve / quantum);
+        this.shares_free = shares_reserve;    
     }
 
     int countShares()
     {
-        return shares;
+        return shares_reserve;
     }
 
     int countRam()
     {
-        return mem;
+        return mem_reserve;
     }
 
     void addWork(DuccType type, String user, String duccid, int jobmem, int qshares, String service_endpoint)
@@ -102,12 +97,12 @@ class VisualizedHost
         // 2-3 in real life.  If this should change so it's common to have more than about 10 elements in the list
         // we should switch to a map.
 
-        logger.debug(methodName, null, name, "Set", qshares, "qshares for", name, type, duccid, ": mem", mem, "free qshares", shares_free, "from OR publication.");
+        logger.debug(methodName, null, name, "Set", qshares, "qshares for", name, type, duccid, ": mem_reserve", mem_reserve, "free qshares", shares_free, "from OR publication.");
 
         // if ( type == DuccType.Reservation ) qshares = shares_free;  // Trust the RM and the Force, Luke
 
         if ( shares_free - qshares < 0 ) {
-            logger.warn(methodName, null, name, "SHARES FREE WENT NEGATIVE for", type, duccid, user, "qshares", qshares, "mem", mem, "shares_free", shares_free);
+            logger.warn(methodName, null, name, "SHARES FREE WENT NEGATIVE for", type, duccid, user, "qshares", qshares, "mem_reserve", mem_reserve, "shares_free", shares_free);
             return;
         } else {
             shares_free -= qshares;
@@ -138,14 +133,14 @@ class VisualizedHost
     {
         String methodName = "toSvg  ";  // (extra spaces so logs line up better)
 
-        if ( shares == 0 ) return;
+        if ( shares_reserve == 0 ) return;
         if ( shares_free > 0 ) addWork(DuccType.Undefined, "", "", 0, shares_free, null);
 
-        float size = (float) Math.sqrt(mem);
-        logger.debug(methodName, null, name, "mem =", mem, "size =", size);
+        float size = (float) Math.sqrt(mem_reserve);
+        logger.debug(methodName, null, name, "mem =", mem_reserve, "size =", size);
             
         // here set a div that is TITLE_ADJUSTMENT higher and .2 wider than the actual node
-        m.divStart(name, mem);
+        m.divStart(name, mem_reserve);
         m.svgStart(size + .2f, (size + TITLE_ADJUSTMENT));       // a bit taller than needed to make room for label
         // a bit wider, for horizontal spacing
 
@@ -153,14 +148,14 @@ class VisualizedHost
         m.rect(0f, TITLE_ADJUSTMENT, size, size, "black", "none", .1f, "");
         
         // here draw the node name just above the node box, including the hover
-        m.tooltipStart(name + " (" + mem + "GB)");
+        m.tooltipStart(name + " (" + mem_total + "GB)");
         m.nodeLabel((size/2), TITLE_ADJUSTMENT - .3f, name);
         m.tooltipEnd();
         
         Collections.sort(fragments, sorter);
-        float height_one_share = (float) Math.sqrt(shares * quantum) / shares;
-        float foo = (float) Math.sqrt(mem) / shares;
-        logger.debug(methodName, null, name, "avail", (shares*quantum), "height-one-share", height_one_share, "foo", foo);
+        float height_one_share = (float) Math.sqrt(shares_reserve * quantum) / shares_reserve;
+        float foo = (float) Math.sqrt(mem_reserve) / shares_reserve;
+        logger.debug(methodName, null, name, "avail", (shares_reserve*quantum), "height-one-share", height_one_share, "foo", foo);
         float top = 0f + TITLE_ADJUSTMENT;                   // the top of the box
         logger.debug(methodName, null, name, "Draw", fragments.size(), "rectangles, box size", size, "share height", height_one_share);