You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2019/07/12 19:37:13 UTC

svn commit: r1862996 - /uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java

Author: cwiklik
Date: Fri Jul 12 19:37:13 2019
New Revision: 1862996

URL: http://svn.apache.org/viewvc?rev=1862996&view=rev
Log:
UIMA-6044 modified code responsible for CPU reporting

Modified:
    uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java?rev=1862996&r1=1862995&r2=1862996&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java Fri Jul 12 19:37:13 2019
@@ -46,7 +46,7 @@ import org.apache.uima.ducc.transport.ev
 public class LinuxProcessMetricsProcessor extends BaseProcessor implements
 		ProcessMetricsProcessor {
 
-	private long previousCPUReadingInMillis = 0;
+	private long previousCPUReadingInNanos = 0;
 	
 	private long previousSnapshotTime = 0;
 
@@ -192,10 +192,8 @@ public class LinuxProcessMetricsProcesso
 			processCpuUsage = pool
 					.submit(processCpuUsageCollector);
 			long cpuUsageInNanos = processCpuUsage.get().getCpuUsage();
-			if ( cpuUsageInNanos >= 0 ) {
-				// cpuUsage comes from cpuacct.usage and is in nanos
-				cpuUsage = Math.round( cpuUsageInNanos / 1000000 );  // normalize into millis
-			} 
+			// cpuUsage comes from cpuacct.usage and is in nanos
+			cpuUsage =  cpuUsageInNanos;// / 1000000 ;  // normalize into millis
 			logger.debug(
 					"LinuxProcessMetricsProcessor.getCpuUsage",null,
 					"CPU USAGE:"+cpuUsageInNanos+ " CLOCK RATE:"+agent.cpuClockRate+" Total CPU USAGE:"+cpuUsage);
@@ -203,47 +201,47 @@ public class LinuxProcessMetricsProcesso
 		return cpuUsage;
 	}
 	
-	private long getCpuTime( long totalCpuUsageInMillis) throws Exception {
-		long cp = -1;
-		if (managedProcess.getDuccProcess().getProcessState()
-				.equals(ProcessState.Running) ||
-				managedProcess.getDuccProcess().getProcessState()
-				.equals(ProcessState.Initializing)	
-				) {
-			if (agent.useCgroups && totalCpuUsageInMillis != -1) {
-				
-				long timeRunning = 1;
-				if ( process.getTimeWindowInit() != null ) {
-					timeRunning = process.getTimeWindowInit().getElapsedMillis();
-				}
-				if ( process.getTimeWindowRun() != null ) {
-					timeRunning += process.getTimeWindowRun().getElapsedMillis();
-				}
-				// normalize time in running state into seconds
-				percentCPU = Math.round(100*( (totalCpuUsageInMillis*1.0)/ (timeRunning*1.0)));
-				cp = percentCPU;
-			}
-		} else {
-			cp  = percentCPU;
-		}
-		return cp;
-	}
+  private long getCpuTime(long totalCpuUsageInNanos) throws Exception {
+    long cp = -1;
+    if (agent.useCgroups) {
+      if (managedProcess.getDuccProcess().getProcessState().equals(ProcessState.Running)
+              || managedProcess.getDuccProcess().getProcessState()
+                      .equals(ProcessState.Initializing)) {
+
+        long timeRunning = 1;
+        if (process.getTimeWindowInit() != null) {
+          timeRunning = process.getTimeWindowInit().getElapsedMillis();
+        }
+        if (process.getTimeWindowRun() != null) {
+          timeRunning += process.getTimeWindowRun().getElapsedMillis();
+        }
+        long totalCpuUsageInMillis = totalCpuUsageInNanos/1000000;
+        // normalize time in running state into seconds
+        percentCPU = Math.round(100*( (totalCpuUsageInMillis*1.0)/ (timeRunning*1.0)));
+
+        cp = percentCPU;
+
+      } else {
+        cp = percentCPU;
+      }
+    }
 
-	private long getCurrentCpu(long totalCpuUsageInMillis ) {
+    return cp;
+  }
+
+	private long getCurrentCpu(long totalCpuUsageInNanos ) {
 		long currentCpu=-1;
 		// publish current CPU usage by computing a delta from the last time
 		// CPU data was fetched.
-		if ( totalCpuUsageInMillis > 0 ) {
-			double millisCPU = ( totalCpuUsageInMillis - previousCPUReadingInMillis )*1.0;
-			double millisRun = ( System.currentTimeMillis() - previousSnapshotTime )*1.0;
-			currentCpu = Math.round(100*(millisCPU/millisRun) ) ;
-			previousCPUReadingInMillis = totalCpuUsageInMillis;
+		if ( agent.useCgroups) {
+		  //long totalCpuUsageInMillis = totalCpuUsageInNanos/1000000;
+			long millisCPU =  (totalCpuUsageInNanos - previousCPUReadingInNanos)/1000000 ;
+			long millisRun = System.currentTimeMillis() - previousSnapshotTime ;
+			currentCpu = Math.round(100*( (millisCPU*1.0)/(millisRun*1.0)) );
+			previousCPUReadingInNanos = totalCpuUsageInNanos;
 			previousSnapshotTime = System.currentTimeMillis();
-		} else {
-			if (agent.useCgroups && totalCpuUsageInMillis != -1 ) {
-				currentCpu = 0;
-			}
-		}
+		} 
+		
 		return currentCpu;
 	}