Bug 1520330. Split out NoVsync into two different scenarios. r=mattwoodrow
authorJeff Muizelaar <jrmuizel@gmail.com>
Tue, 15 Jan 2019 22:33:25 +0000
changeset 511102 6f0a657ae73e55dbcfbf98661739f1aadf07f869
parent 511101 45b6acf51517246d77ddf6649fc6fa3cae219874
child 511103 a6b0bf9e4e6a00ff6347276d57131ad7ab28b476
push id10547
push userffxbld-merge
push dateMon, 21 Jan 2019 13:03:58 +0000
treeherdermozilla-beta@24ec1916bffe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmattwoodrow
bugs1520330
milestone66.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1520330. Split out NoVsync into two different scenarios. r=mattwoodrow Currently there are two conditions where CONTENT_FRAME_TIME_REASON can be NoVsync. Since, were getting an appreciable amount of these with WebRender it makes sense to split out the telemetry so that we can confirm which scenario we're hitting. Differential Revision: https://phabricator.services.mozilla.com/D16611
gfx/layers/ipc/CompositorBridgeParent.cpp
toolkit/components/telemetry/Histograms.json
--- a/gfx/layers/ipc/CompositorBridgeParent.cpp
+++ b/gfx/layers/ipc/CompositorBridgeParent.cpp
@@ -2495,20 +2495,24 @@ int32_t RecordContentFrameTime(
     // child pipelines contained within a render, after it finishes, but I
     // can't see how to query what child pipeline would have been rendered,
     // when we choose to not do it.
     if (fracLatencyNorm < 200) {
       // Success
       Telemetry::AccumulateCategorical(
           LABELS_CONTENT_FRAME_TIME_REASON::OnTime);
     } else {
-      if (aCompositeId == VsyncId() || aTxnId >= aCompositeId) {
-        // Vsync ids are nonsensical, possibly something got trigged from
+      if (aCompositeId == VsyncId()) {
+        // aCompositeId is 0, possibly something got trigged from
         // outside vsync?
         Telemetry::AccumulateCategorical(
+            LABELS_CONTENT_FRAME_TIME_REASON::NoVsyncNoId);
+      } else if (aTxnId >= aCompositeId) {
+        // Vsync ids are nonsensical, maybe we're trying to catch up?
+        Telemetry::AccumulateCategorical(
             LABELS_CONTENT_FRAME_TIME_REASON::NoVsync);
       } else if (aCompositeId - aTxnId > 1) {
         // Composite started late (and maybe took too long as well)
         if (aFullPaintTime >= TimeDuration::FromMilliseconds(20)) {
           Telemetry::AccumulateCategorical(
               LABELS_CONTENT_FRAME_TIME_REASON::MissedCompositeLong);
         } else if (aFullPaintTime >= TimeDuration::FromMilliseconds(10)) {
           Telemetry::AccumulateCategorical(
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -13247,17 +13247,17 @@
   },
   "CONTENT_FRAME_TIME_REASON": {
     "record_in_processes": ["main", "gpu"],
     "alert_emails": ["gfx-telemetry-alerts@mozilla.com", "mwoodrow@mozilla.com"],
     "bug_numbers": [1510853],
     "expires_in_version": "73",
     "kind": "categorical",
     "description": "The reason that CONTENT_FRAME_TIME recorded a slow (>200) result, if any.",
-    "labels": ["OnTime", "NoVsync", "MissedComposite", "SlowComposite", "MissedCompositeMid", "MissedCompositeLong", "MissedCompositeLow"]
+    "labels": ["OnTime", "NoVsync", "MissedComposite", "SlowComposite", "MissedCompositeMid", "MissedCompositeLong", "MissedCompositeLow", "NoVsyncNoId"]
   },
   "CONTENT_LARGE_PAINT_PHASE_WEIGHT": {
     "record_in_processes": ["main", "content"],
     "alert_emails": ["gfx-telemetry-alerts@mozilla.com", "mwoodrow@mozilla.com"],
     "bug_numbers": [1309442, 1518134],
     "expires_in_version": "72",
     "keyed": true,
     "keys": ["dl", "flb", "fr", "r"],