annotate chrome/memory.js @ 206:beca399c3a16

Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
author Joel Maher <jmaher@mozilla.com>
date Wed, 09 Nov 2011 10:41:03 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
206
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
1
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
2 var gChildProcess = true;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
3 var gMemCallback = null;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
4
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
5
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
6 /*
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
7 * Initialize memory collector. Determine if we have a child process.
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
8 */
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
9 function initializeMemoryCollector(callback, args) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
10 gMemCallback = function() { return callback(args); };
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
11
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
12 var os = Components.classes["@mozilla.org/observer-service;1"].
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
13 getService(Components.interfaces.nsIObserverService);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
14
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
15 os.addObserver(function () {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
16 var os = Components.classes["@mozilla.org/observer-service;1"].
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
17 getService(Components.interfaces.nsIObserverService);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
18
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
19 memTimer.cancel();
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
20 memTimer = null;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
21
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
22 os.removeObserver(arguments.callee, "child-memory-reporter-update", false);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
23 os.addObserver(collectAndReport, "child-memory-reporter-update", false);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
24 gMemCallback();
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
25 }, "child-memory-reporter-update", false);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
26
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
27 /*
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
28 * Assume we have a child process, but if timer fires before we call the observer
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
29 * we will assume there is no child process.
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
30 */
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
31 var event = {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
32 notify: function(timer) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
33 memTimer = null;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
34 gChildProcess = false;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
35 gMemCallback();
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
36 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
37 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
38
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
39 memTimer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
40 memTimer.initWithCallback(event, 10000, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
41
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
42 os.notifyObservers(null, "child-memory-reporter-request", null);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
43 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
44
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
45 /*
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
46 * Collect memory from all processes and callback when done collecting.
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
47 */
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
48 function collectMemory(callback, args) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
49 gMemCallback = function() { return callback(args); };
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
50
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
51 if (gChildProcess) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
52 var os = Components.classes["@mozilla.org/observer-service;1"].
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
53 getService(Components.interfaces.nsIObserverService);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
54
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
55 os.notifyObservers(null, "child-memory-reporter-request", null);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
56 } else {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
57 collectAndReport(null, null, null);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
58 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
59 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
60
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
61 function collectAndReport(aSubject, aTopic, aData) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
62 dumpLine(collectRSS());
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
63 gMemCallback();
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
64 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
65
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
66 function collectRSS() {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
67 var mgr = Components.classes["@mozilla.org/memory-reporter-manager;1"].
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
68 getService(Components.interfaces.nsIMemoryReporterManager);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
69 var e = mgr.enumerateReporters();
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
70 text = "";
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
71 while (e.hasMoreElements()) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
72 var reporter = e.getNext().QueryInterface(Components.interfaces.nsIMemoryReporter);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
73 if (reporter.path == 'resident') {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
74 procName = reporter.process;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
75 if (procName == '')
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
76 procName = "Main";
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
77
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
78 //For content process it is in the format "Content (<PID>)", we just want Content
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
79 procName = procName.split(' ')[0];
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
80 text += "RSS: " + procName + ": " + reporter.amount + "\n";
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
81 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
82 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
83 return text;
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
84 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
85
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
86 /*
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
87 * Cleanup and stop memory collector.
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
88 */
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
89 function stopMemCollector() {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
90 if (gChildProcess) {
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
91 var os = Cc["@mozilla.org/observer-service;1"].
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
92 getService(Ci.nsIObserverService);
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
93 os.removeObserver(collectAndReport, "child-memory-reporter-update");
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
94 }
beca399c3a16 Bug 685632 - Please collect RSS (memory) data during Talos testing on Android. r=jlebar,njn
Joel Maher <jmaher@mozilla.com>
parents:
diff changeset
95 }