Skip to content

Commit 0b574b8

Browse files
Unreviewed, reverting r273122 and r273123.
https://bugs.webkit.org/show_bug.cgi?id=222449 Didn't fix the extreme test variance, and caused some internal performance bots to hang during testing Reverted changesets: "MotionMark scores are super sensitive to a single long frame" https://bugs.webkit.org/show_bug.cgi?id=220847 https://trac.webkit.org/changeset/273122 "MotionMark scores are super sensitive to a single long frame" https://bugs.webkit.org/show_bug.cgi?id=220847 https://trac.webkit.org/changeset/273123 Canonical link: https://commits.webkit.org/234601@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273527 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 3206777 commit 0b574b8

4 files changed

Lines changed: 47 additions & 60 deletions

File tree

PerformanceTests/ChangeLog

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
2021-02-25 Commit Queue <commit-queue@webkit.org>
2+
3+
Unreviewed, reverting r273122 and r273123.
4+
https://bugs.webkit.org/show_bug.cgi?id=222449
5+
6+
Didn't fix the extreme test variance, and caused some internal
7+
performance bots to hang during testing
8+
9+
Reverted changesets:
10+
11+
"MotionMark scores are super sensitive to a single long frame"
12+
https://bugs.webkit.org/show_bug.cgi?id=220847
13+
https://trac.webkit.org/changeset/273122
14+
15+
"MotionMark scores are super sensitive to a single long frame"
16+
https://bugs.webkit.org/show_bug.cgi?id=220847
17+
https://trac.webkit.org/changeset/273123
18+
119
2021-02-22 Sergio Villar Senin <svillar@igalia.com>
220

321
REGRESSION (r266695): twitch.tv: when in fullscreen, WebKit continually does 350ms layouts. Firefox and Chrome do not

PerformanceTests/MotionMark/tests/resources/main.js

Lines changed: 10 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -110,33 +110,14 @@ Controller = Utilities.createClass(
110110
return comment in this._marks;
111111
},
112112

113-
filterOutOutliers: function(array)
114-
{
115-
if (array.length == 0)
116-
return [];
117-
118-
array.sort();
119-
var q1 = array[Math.min(Math.round(array.length * 1 / 4), array.length - 1)];
120-
var q3 = array[Math.min(Math.round(array.length * 3 / 4), array.length - 1)];
121-
var interquartileRange = q3 - q1;
122-
var minimum = q1 - interquartileRange * 1.5;
123-
var maximum = q3 + interquartileRange * 1.5;
124-
return array.filter(x => x >= minimum && x <= maximum);
125-
},
126-
127113
_measureAndResetInterval: function(currentTimestamp)
128114
{
129115
var sampleCount = this._sampler.sampleCount;
130116
var averageFrameLength = 0;
131117

132118
if (this._intervalEndTimestamp) {
133-
var durations = [];
134-
for (var i = Math.max(this._intervalStartIndex, 1); i < sampleCount; ++i) {
135-
durations.push(this._sampler.samples[0][i] - this._sampler.samples[0][i - 1]);
136-
}
137-
var filteredDurations = this.filterOutOutliers(durations);
138-
if (filteredDurations.length > 0)
139-
averageFrameLength = filteredDurations.reduce((a, b) => a + b, 0) / filteredDurations.length;
119+
var intervalStartTimestamp = this._sampler.samples[0][this._intervalStartIndex];
120+
averageFrameLength = (currentTimestamp - intervalStartTimestamp) / (sampleCount - this._intervalStartIndex);
140121
}
141122

142123
this._intervalStartIndex = sampleCount;
@@ -157,34 +138,21 @@ Controller = Utilities.createClass(
157138
this._frameLengthEstimator.sample(lastFrameLength);
158139
frameLengthEstimate = this._frameLengthEstimator.estimate;
159140
}
160-
} else {
161-
this.registerFrameTime(lastFrameLength);
162-
if (this.intervalHasConcluded(timestamp)) {
163-
var intervalStartTimestamp = this._sampler.samples[0][this._intervalStartIndex];
164-
intervalAverageFrameLength = this._measureAndResetInterval(timestamp);
165-
if (this._isFrameLengthEstimatorEnabled) {
166-
this._frameLengthEstimator.sample(intervalAverageFrameLength);
167-
frameLengthEstimate = this._frameLengthEstimator.estimate;
168-
}
169-
didFinishInterval = true;
170-
this.didFinishInterval(timestamp, stage, intervalAverageFrameLength);
171-
this._frameLengthEstimator.reset();
141+
} else if (timestamp >= this._intervalEndTimestamp) {
142+
var intervalStartTimestamp = this._sampler.samples[0][this._intervalStartIndex];
143+
intervalAverageFrameLength = this._measureAndResetInterval(timestamp);
144+
if (this._isFrameLengthEstimatorEnabled) {
145+
this._frameLengthEstimator.sample(intervalAverageFrameLength);
146+
frameLengthEstimate = this._frameLengthEstimator.estimate;
172147
}
148+
didFinishInterval = true;
149+
this.didFinishInterval(timestamp, stage, intervalAverageFrameLength);
173150
}
174151

175152
this._sampler.record(timestamp, stage.complexity(), frameLengthEstimate);
176153
this.tune(timestamp, stage, lastFrameLength, didFinishInterval, intervalAverageFrameLength);
177154
},
178155

179-
registerFrameTime: function(lastFrameLength)
180-
{
181-
},
182-
183-
intervalHasConcluded: function(timestamp)
184-
{
185-
return timestamp >= this._intervalEndTimestamp;
186-
},
187-
188156
didFinishInterval: function(timestamp, stage, intervalAverageFrameLength)
189157
{
190158
},
@@ -368,8 +336,6 @@ RampController = Utilities.createSubclass(Controller,
368336
tierFastTestLength: 250,
369337
// If the engine is under stress, let the test run a little longer to let the measurement settle
370338
tierSlowTestLength: 750,
371-
// Tier intervals must have this number of non-outlier frames in order to end.
372-
numberOfFramesRequiredInInterval: 9,
373339

374340
rampWarmupLength: 200,
375341

@@ -389,25 +355,10 @@ RampController = Utilities.createSubclass(Controller,
389355
Controller.prototype.start.call(this, startTimestamp, stage);
390356
this._rampStartTimestamp = 0;
391357
this.intervalSamplingLength = 100;
392-
this._frameTimeHistory = [];
393-
},
394-
395-
registerFrameTime: function(lastFrameLength)
396-
{
397-
this._frameTimeHistory.push(lastFrameLength);
398-
},
399-
400-
intervalHasConcluded: function(timestamp)
401-
{
402-
if (!Controller.prototype.intervalHasConcluded.call(this, timestamp))
403-
return false;
404-
405-
return this._finishedTierSampling || this.filterOutOutliers(this._frameTimeHistory).length > this.numberOfFramesRequiredInInterval;
406358
},
407359

408360
didFinishInterval: function(timestamp, stage, intervalAverageFrameLength)
409361
{
410-
this._frameTimeHistory = [];
411362
if (!this._finishedTierSampling) {
412363
if (this._tierStartTimestamp > 0 && timestamp < this._tierStartTimestamp + this.tierFastTestLength)
413364
return;

Tools/ChangeLog

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
2021-02-25 Commit Queue <commit-queue@webkit.org>
2+
3+
Unreviewed, reverting r273122 and r273123.
4+
https://bugs.webkit.org/show_bug.cgi?id=222449
5+
6+
Didn't fix the extreme test variance, and caused some internal
7+
performance bots to hang during testing
8+
9+
Reverted changesets:
10+
11+
"MotionMark scores are super sensitive to a single long frame"
12+
https://bugs.webkit.org/show_bug.cgi?id=220847
13+
https://trac.webkit.org/changeset/273122
14+
15+
"MotionMark scores are super sensitive to a single long frame"
16+
https://bugs.webkit.org/show_bug.cgi?id=220847
17+
https://trac.webkit.org/changeset/273123
18+
119
2021-02-25 Commit Queue <commit-queue@webkit.org>
220

321
Unreviewed, reverting r273503.

Tools/Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"timeout": 1800,
33
"count": 1,
4-
"svn_source": "https://svn.webkit.org/repository/webkit/trunk/PerformanceTests/MotionMark/@r273122",
4+
"svn_source": "https://svn.webkit.org/repository/webkit/trunk/PerformanceTests/MotionMark/@r272044",
55
"webserver_benchmark_patch": "data/patches/webserver/MotionMark.patch",
66
"webdriver_benchmark_patch": "data/patches/webdriver/MotionMark.patch",
77
"entry_point": "index.html",

0 commit comments

Comments
 (0)