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 2016/10/28 17:43:51 UTC

svn commit: r1767046 - /uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java

Author: cwiklik
Date: Fri Oct 28 17:43:51 2016
New Revision: 1767046

URL: http://svn.apache.org/viewvc?rev=1767046&view=rev
Log:
UIMA-5047 fix path problem with cpuacct.usage file when running on RHELv7 

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

Modified: uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java?rev=1767046&r1=1767045&r2=1767046&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-agent/src/main/java/org/apache/uima/ducc/agent/launcher/CGroupsManager.java Fri Oct 28 17:43:51 2016
@@ -128,11 +128,15 @@ public class CGroupsManager {
 	public static void main(String[] args) {
 		try {
 
-			String cgBaseDir = fetchCgroupsBaseDir("/proc/mounts");
+//			String cgBaseDir = "/cgroup"; //"/sys/fs/cgroup";//fetchCgroupsBaseDir("/proc/mounts");
+			String cgBaseDir = "/sys/fs/cgroup";//fetchCgroupsBaseDir("/proc/mounts");
 			
 			CGroupsManager cgMgr = new CGroupsManager("/usr/bin",cgBaseDir, "memory",
 					null, 10000);
-      	  cgMgr.validator(cgBaseDir, "test2", System.getProperty("user.name"),false)
+			System.out.println("Cgroups Accounting Enabled:"+cgMgr.isCpuReportingEnabled());
+			
+			/*
+			cgMgr.validator(cgBaseDir, "test2", System.getProperty("user.name"),false)
           .cgcreate();
 
 			System.out.println("Cgroups Installed:"
@@ -149,7 +153,7 @@ public class CGroupsManager {
 				cgMgr.wait(60000);
 			}
 			cgMgr.destroyContainer(args[0], args[2], NodeAgent.SIGKILL);
-
+*/
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -195,10 +199,14 @@ public class CGroupsManager {
 	 * the new looks like <cgroup folder>/memory
 	 */
 	private String getCGroupLocation(String subsystem) {
+		String location = cgroupBaseDir.trim();
+		
 		if ( legacyCgConfig ) {
-			return cgroupBaseDir;
-		}
-		return cgroupBaseDir + subsystem;
+			return location;
+		} else if (!cgroupBaseDir.endsWith(System.getProperty("file.separator") )) {
+			location += System.getProperty("file.separator");
+		} 
+		return location + subsystem;
 	}
 	
 	public void configure(NodeAgent agent ) {
@@ -489,16 +497,39 @@ public class CGroupsManager {
 		System.out.println(message);
 		return false;
 	}
-
+	private String composeCpuAccountingFileName(String id) {
+		String location = getCGroupLocation("cpuacct").trim();
+		if ( !location.endsWith(System.getProperty("file.separator"))) {
+			location = location + System.getProperty("file.separator");
+		}
+		return location+id+"cpuacct.usage";
+	}
 	public boolean isCpuReportingEnabled() {
-		String file = getCGroupLocation("cpuacct")+System.getProperty("file.separator")+"cpuacct.usage";
-		File f = new File(file);
+//		String file = getCGroupLocation("cpuacct")+System.getProperty("file.separator")+"cpuacct.usage";
+	
+		File f = new File(composeCpuAccountingFileName(""));
+		System.out.println(f.getAbsolutePath());
 		return f.exists();
 	}
 	public long getCpuUsage(String containerId ) throws Exception {
 		long usage = 0;
-		String file = getCGroupLocation("cpuacct")+containerId+System.getProperty("file.separator")+"cpuacct.usage";
-		agentLogger.trace("getCpuUsage", null, "CPUACCT.USAGE file:"+file);
+
+		if (!containerId.endsWith(System.getProperty("file.separator"))) {
+			containerId = containerId + System.getProperty("file.separator");
+		}
+		/*
+		if (!containerId.startsWith(System.getProperty("file.separator"))) {
+			containerId = System.getProperty("file.separator")+containerId;
+		}
+		String location = getCGroupLocation("cpuacct").trim();
+		if ( !location.endsWith(System.getProperty("file.separator"))) {
+			location += System.getProperty("file.separator");
+		}
+//		String file = getCGroupLocation("cpuacct")+containerId+System.getProperty("file.separator")+"cpuacct.usage";
+		String file = location+"cpuacct.usage";
+		*/
+		String file = composeCpuAccountingFileName(containerId.trim());
+		agentLogger.info("getCpuUsage", null, "CPUACCT.USAGE file:"+file);
 		File f = new File(file);
 		if ( f.exists() ) {
 			InputStreamReader isr = new InputStreamReader(new FileInputStream(f));