bug 1364502 - Allow GHOST_WINDOWS to be recorded opt-out data-r=bsmedberg r=mccr8
GHOST_WINDOWS will be used to satisfy Quantum release criteria. As such, we
need release-channel collection.
Near as I can tell the memory manager works just as well in Release as in
pre-release, so this should be all that's necessary.
MozReview-Commit-ID: 1iLJhlgKoVQ
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -1486,16 +1486,17 @@
},
"GHOST_WINDOWS": {
"record_in_processes": ["main", "content"],
"alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
"expires_in_version": "never",
"kind": "exponential",
"high": 128,
"n_buckets": 32,
+ "releaseChannelCollection": "opt-out",
"description": "Number of ghost windows"
},
"MEMORY_FREE_PURGED_PAGES_MS": {
"record_in_processes": ["main", "content"],
"alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
"expires_in_version": "never",
"kind": "exponential",
"high": 1024,
--- a/toolkit/components/telemetry/TelemetrySession.jsm
+++ b/toolkit/components/telemetry/TelemetrySession.jsm
@@ -1091,20 +1091,16 @@ var Impl = {
return ret;
},
/**
* Pull values from about:memory into corresponding histograms
*/
gatherMemory: function gatherMemory() {
- if (!Telemetry.canRecordExtended) {
- return;
- }
-
let mgr;
try {
mgr = Cc["@mozilla.org/memory-reporter-manager;1"].
getService(Ci.nsIMemoryReporterManager);
} catch (e) {
// OK to skip memory reporters in xpcshell
return;
}
@@ -1143,30 +1139,36 @@ var Impl = {
} catch (e) {
}
}
let b = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_BYTES, n);
let c = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_COUNT, n);
let cc = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_COUNT_CUMULATIVE, n);
let p = (id, n) => h(id, Ci.nsIMemoryReporter.UNITS_PERCENTAGE, n);
+ // GHOST_WINDOWS is opt-out as of Firefox 55
+ c("GHOST_WINDOWS", "ghostWindows");
+
+ if (!Telemetry.canRecordExtended) {
+ return;
+ }
+
b("MEMORY_VSIZE", "vsize");
b("MEMORY_VSIZE_MAX_CONTIGUOUS", "vsizeMaxContiguous");
b("MEMORY_RESIDENT_FAST", "residentFast");
b("MEMORY_UNIQUE", "residentUnique");
b("MEMORY_HEAP_ALLOCATED", "heapAllocated");
p("MEMORY_HEAP_OVERHEAD_FRACTION", "heapOverheadFraction");
b("MEMORY_JS_GC_HEAP", "JSMainRuntimeGCHeap");
c("MEMORY_JS_COMPARTMENTS_SYSTEM", "JSMainRuntimeCompartmentsSystem");
c("MEMORY_JS_COMPARTMENTS_USER", "JSMainRuntimeCompartmentsUser");
b("MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED", "imagesContentUsedUncompressed");
b("MEMORY_STORAGE_SQLITE", "storageSQLite");
cc("LOW_MEMORY_EVENTS_VIRTUAL", "lowMemoryEventsVirtual");
cc("LOW_MEMORY_EVENTS_PHYSICAL", "lowMemoryEventsPhysical");
- c("GHOST_WINDOWS", "ghostWindows");
cc("PAGE_FAULTS_HARD", "pageFaultsHard");
if (!Utils.isContentProcess && !this._totalMemoryTimeout) {
// Only the chrome process should gather total memory
// total = parent RSS + sum(child USS)
this._totalMemory = mgr.residentFast;
if (ppmm.childCount > 1) {
// Do not report If we time out waiting for the children to call