01: package org.cougaar.core.qos.profile;
02:
03: import java.lang.reflect.*;
04: import java.io.*;
05: import java.text.*;
06: import java.util.*;
07: import java.util.regex.*;
08: import org.cougaar.core.agent.*;
09: import org.cougaar.core.component.*;
10: import org.cougaar.core.mts.*;
11: import org.cougaar.core.node.*;
12: import org.cougaar.core.qos.metrics.*;
13: import org.cougaar.core.service.*;
14: import org.cougaar.core.service.wp.*;
15: import org.cougaar.core.thread.*;
16: import org.cougaar.core.wp.resolver.*;
17: import org.cougaar.util.*;
18:
19: /**
20: * This component profiles system memory usage from "/proc/meminfo".
21: *
22: * @see ProfilerCoordinator required coordinator component
23: */
24: public class ProcMemInfo extends ProfilerBase {
25: // total: used: free: shared: buffers: cached:
26: // Mem: 2114187264 1731149824 383037440 0 135684096 1517056000
27: // Swap: 2146787328 0 2146787328
28: private static final String[] FIELDS = new String[] { "mem_total",
29: "mem_used", "mem_free", "mem_shared", "mem_buff",
30: "mem_cached", "swap_total", "swap_used", "swap_free", };
31: private static final String HEADER = toHeader(FIELDS);
32:
33: public void run() {
34: log("org.cougaar.core.qos.profile.proc.meminfo", HEADER,
35: getMemInfo());
36: }
37:
38: private String getMemInfo() {
39: StringBuffer buf = new StringBuffer();
40: try {
41: BufferedReader in = new BufferedReader(new FileReader(
42: "/proc/meminfo"));
43: String mem = "";
44: String swap = "";
45: while (true) {
46: String line = in.readLine();
47: if (line == null) {
48: break;
49: }
50: String sp = "^\\s*" + "(Mem|Swap):" + "\\s*" + "(.*)"
51: + "\\s*$";
52: Pattern p = Pattern.compile(sp);
53: Matcher m = p.matcher(line);
54: if (!m.matches()) {
55: continue;
56: }
57: String name = m.group(1);
58: String value = m.group(2);
59: if ("Mem".equals(name)) {
60: mem = value;
61: } else if ("Swap".equals(name)) {
62: swap = value;
63: }
64: }
65: in.close();
66: String s = mem + " " + swap;
67: String[] sa = s.trim().split("\\s+");
68: for (int i = 0; i < sa.length; i++) {
69: for (int j = 11 - sa[i].length(); j > 0; j--) {
70: buf.append(" ");
71: }
72: buf.append(sa[i]).append(", ");
73: }
74: } catch (Exception e) {
75: }
76: return buf.toString();
77: }
78: }
|