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