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 2013/06/27 23:34:54 UTC

svn commit: r1497571 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent: launcher/CGroupsManager.java processors/LinuxProcessMetricsProcessor.java

Author: cwiklik
Date: Thu Jun 27 21:34:53 2013
New Revision: 1497571

URL: http://svn.apache.org/r1497571
Log:
UIMA-2804 modified to aggregate swap space for all processes in a cgroup

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

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java?rev=1497571&r1=1497570&r2=1497571&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java Thu Jun 27 21:34:53 2013
@@ -66,7 +66,11 @@ public class CGroupsManager {
 		this.cgroupSubsystems = cgroupSubsystems;
 		this.agentLogger = agentLogger;
 	}
-
+	public String[] getPidsInCgroup(String cgroupName) throws Exception {
+		File f = new File(cgroupBaseDir + "/" + cgroupName + "/cgroup.procs");
+		//	collect all pids
+		return readPids(f);
+	}
 	private String[] readPids(File f) throws Exception {
 		List<String> pids = new ArrayList<String>();
 		BufferedReader br = new BufferedReader(new FileReader(f));

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java?rev=1497571&r1=1497570&r2=1497571&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/processors/LinuxProcessMetricsProcessor.java Thu Jun 27 21:34:53 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.uima.ducc.agent.processors;
 
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.RandomAccessFile;
 import java.util.concurrent.ExecutorService;
@@ -127,9 +128,23 @@ public class LinuxProcessMetricsProcesso
         String DUCC_HOME = Utils.findDuccHome();
         // executes script DUCC_HOME/admin/ducc_get_process_swap_usage.sh which sums up swap used by
         // a process
-        DuccProcessSwapSpaceUsage processSwapSpaceUsage = new DuccProcessSwapSpaceUsage(
-                process.getPID(), managedProcess.getOwner(), DUCC_HOME
-                        + "/admin/ducc_get_process_swap_usage.sh", logger);
+        long totalSwapUsage = 0;
+        if ( agent.useCgroups ) {
+            String[] cgroupPids = 
+            		agent.cgroupsManager.getPidsInCgroup(managedProcess.getDuccProcess().getCGroup().getId());
+            
+            for( String pid : cgroupPids ) {
+                DuccProcessSwapSpaceUsage processSwapSpaceUsage = new DuccProcessSwapSpaceUsage(
+                        pid, managedProcess.getOwner(), DUCC_HOME
+                                + "/admin/ducc_get_process_swap_usage.sh", logger);
+            	totalSwapUsage += processSwapSpaceUsage.getSwapUsage();
+            }
+        } else {
+          DuccProcessSwapSpaceUsage processSwapSpaceUsage = new DuccProcessSwapSpaceUsage(
+          process.getPID(), managedProcess.getOwner(), DUCC_HOME
+                   + "/admin/ducc_get_process_swap_usage.sh", logger);
+          totalSwapUsage = processSwapSpaceUsage.getSwapUsage();
+        }
 
         // report cpu utilization while the process is running
         if ( managedProcess.getDuccProcess().getProcessState().equals(ProcessState.Running)) {
@@ -162,7 +177,8 @@ public class LinuxProcessMetricsProcesso
         process.setMajorFaults(majorFaults);
         // Current Process Swap Usage in bytes
         long st = System.currentTimeMillis();
-        long processSwapUsage = processSwapSpaceUsage.getSwapUsage() * 1024;
+//        long processSwapUsage = processSwapSpaceUsage.getSwapUsage() * 1024;
+        long processSwapUsage = totalSwapUsage * 1024;
         // collects swap usage from /proc/<PID>/smaps file via a script
         // DUCC_HOME/admin/collect_process_swap_usage.sh
         process.setSwapUsage(processSwapUsage);