Author: cwiklik
Date: Tue Jul  2 17:08:11 2013
New Revision: 1499022

URL: http://svn.apache.org/r1499022
Log:
UIMA-3043 Modify how major faults are collected

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/DuccProcessMemoryPageLoadUsage.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/ProcessMemoryPageLoadUsage.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/DuccProcessMemoryPageLoadUsage.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/DuccProcessMemoryPageLoadUsage.java?rev=1499022&r1=1499021&r2=1499022&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/DuccProcessMemoryPageLoadUsage.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/DuccProcessMemoryPageLoadUsage.java
 Tue Jul  2 17:08:11 2013
@@ -1,17 +1,51 @@
 package org.apache.uima.ducc.common.agent.metrics.swap;
 
-import org.apache.uima.ducc.common.node.metrics.ByteBufferParser;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 
-public class DuccProcessMemoryPageLoadUsage extends ByteBufferParser implements
+public class DuccProcessMemoryPageLoadUsage implements
                ProcessMemoryPageLoadUsage {
-       private static final long serialVersionUID = 1L;
-       public static final int MAJORFAULTSFLD=11;
+       String pid;
        
-       public DuccProcessMemoryPageLoadUsage(byte[] memInfoBuffer,
-                       int[] memInfoFieldOffsets, int[] memInfoFiledLengths) {
-               super(memInfoBuffer, memInfoFieldOffsets, memInfoFiledLengths);
+       public DuccProcessMemoryPageLoadUsage(String pid) {
+               this.pid = pid;
        }       
-       public long getMajorFaults() {
-               return super.getFieldAsLong(MAJORFAULTSFLD);
+       public long getMajorFaults() throws Exception {
+               return collectProcessMajorFaults();
        }
+       private long collectProcessMajorFaults() throws Exception {
+               String[] command = new String[] {"/bin/ps","-o","maj_flt",pid};
+
+               ProcessBuilder builder = new ProcessBuilder(command);
+               Process process = builder.start();
+               InputStream is = process.getInputStream();
+               InputStreamReader isr = new InputStreamReader(is);
+               BufferedReader br = new BufferedReader(isr);
+               String line;
+               int count = 0;
+               String faults = null;
+               try {
+                       while ((line = br.readLine()) != null) {
+                               // skip the header line
+                               if (count == 1) {
+                                       faults = line.trim();
+                                       break;
+                               }
+                               count++;
+                       }
+               } finally {
+                       if (is != null) {
+                               is.close();
+                       }
+                       process.destroy();
+               }
+               process.waitFor();
+               if ( faults != null) {
+                       return Long.parseLong(faults.trim());
+               } else {
+                       return 0;
+               }
+       }
+
 }

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/ProcessMemoryPageLoadUsage.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/ProcessMemoryPageLoadUsage.java?rev=1499022&r1=1499021&r2=1499022&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/ProcessMemoryPageLoadUsage.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/agent/metrics/swap/ProcessMemoryPageLoadUsage.java
 Tue Jul  2 17:08:11 2013
@@ -1,5 +1,5 @@
 package org.apache.uima.ducc.common.agent.metrics.swap;
 
 public interface ProcessMemoryPageLoadUsage {
-       public long getMajorFaults();
+       public long getMajorFaults() throws Exception;
 }


Reply via email to