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);