Sounds good - should we consider this Intent withdrawn for now?
On 10/24/22 10:05 AM, Etienne Pierre-doray wrote:
2.1 is the new version. We can ignore 2.0.
I suppose this doesn't need to be released on M108 then. I'll keep
experimenting.
On Fri, Oct 21, 2022 at 4:36 PM Hannes Payer <hpa...@google.com> wrote:
On Fri, Oct 21, 2022 at 12:31 PM Etienne Pierre-doray
<etien...@chromium.org> wrote:
Is that a very new change? Is there a reason for us to
continue to look at (or cite) 2.0 when 2.1 is live?
I think that happened in August. sky@ or +hpayer@ might be
able to answer this.
2.1 is the new version. We can ignore 2.0.
What's the residual delta now that 2.1 is available to
test against?
Measured on Canary MacBook pro M1, this gets lost in the noise.
Presumably the downside of this change is in
power/battery? Are there other impacts we're looking at?
That's a relevant question. On one side, a website that loops
setTimeout(0) indefinitely would use more CPU until it starts
getting throttled. We have good CPU metrics on Mac
<https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/metrics/power/power_metrics.cc;l=263?q=PerformanceMonitor.ResourceCoalition.CPUTime2&ss=chromium>
and Android
<https://source.chromium.org/chromium/chromium/src/+/main:content/common/android/cpu_time_metrics_internal.cc;l=546?q=Power.CpuTimeSecondsPerProcessType&ss=chromium>,
which haven't regressed in the experiments so far (21 days 1%
stable), which means this doesn't happen enough to make a
dent. On the other side, this feature can also reduce CPU
wakeups for a fixed amount of work (wakeups have an inherent
cost on intel), although wake ups
<https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/metrics/power/power_metrics.cc;l=281?q=PerformanceMonitor.ResourceCoalition.CPUTime2&ss=chromium>
metrics haven't seen any significant shift in the wild.
On Thu, Oct 20, 2022 at 6:22 PM Alex Russell
<slightly...@chromium.org> wrote:
Thanks Etienne; questions inline:
On Thursday, October 20, 2022 at 8:04:19 AM UTC-7 Etienne
Pierre-doray wrote:
Thanks for taking the time to discuss this.
I'm wondering if we understand the constituent
test in Speedometer (or the harness) that is
favouring Safari's out-of-spec behaviour?
There's some context in crbug.com/1297550
<http://crbug.com/1297550> and in speedometer2.1
release notes
<https://webkit.org/blog/13083/speedometer-2-1/>;
Speedometer 2.1 hopefully fixes the benchmark to
mitigate the impact of throttling setTimeout(0) (in
local experiment, it does reduce improvements we can
get with this change).
So if I go directly to browserbench.org
<http://browserbench.org> and click on "speedometer", it
takes me to:
https://browserbench.org/Speedometer2.1/
Is that a very new change? Is there a reason for us to
continue to look at (or cite) 2.0 when 2.1 is live?
Speedometer seems like the key motivator here,
rather than public content
Correct. I think Speedometer2.0 is the main motivator
to shipping this in a timely manner. +sky@ who has
been championing moving forward with this change.
What's the residual delta now that 2.1 is available to
test against?
Ideally we can prove making this change has no
negative impact on metrics we care about.
Another (long-term) benefit is perhaps to move away
from the spec-mendated threshold (which is somewhat
arbitrary) and hopefully take it away from the spec. A
hard-to-prove benefit of removing the 4ms clamping is
to match more closely the devs intent when they write
setTimeout(0), and give the browser more leeway in
implementing a throttling policy.
I'd support finching this on for Stable for some
releases while we get resolution on fixing the
benchmark.
I'm experimenting on M107 (with nesting threshold =
15) and will ramp up to 1% Stable soon.
(We also experimented with Stable 1% on M104-105 for a
different value (nesting = 100), which showed no
regression on Windows / MacOs, but regressed startup
time by 0.5% at the median on Android).
If finching for one milestone is enough to confirm no
regression (from a metrics perspective, I believe it's
enough to get statistically significant data), I'm
hoping we can optimistically ship on M108 through a
waterfall roll-out. Otherwise, maybe we can delay
shipping 1+ milestone.
Presumably the downside of this change is in
power/battery? Are there other impacts we're looking at?
Another option we discussed is to ship as-is on
desktop only (and figure out Android later), but I
feel like this creates a more inconsistent platform.
+1 to doing this in a more uniform way.
Best,
Alex
On Wed, Oct 19, 2022 at 11:52 AM Alex Russell
<slightly...@chromium.org> wrote:
This intent was the subject of a long discussion
at API OWNERS today, and I'm wondering if we
understand the constituent test in Speedometer (or
the harness) that is favouring Safari's
out-of-spec behaviour?
Speedometer seems like the key motivator here,
rather than public content, and winning it matters
in the interim while Apple is gaming this for the
purposes of benchmarketing. I'd support finching
this on for Stable for some releases while we get
resolution on fixing the benchmark.
Best,
Alex
On Thursday, October 13, 2022 at 1:00:12 PM UTC-7
Etienne Pierre-doray wrote:
Contact emails
etien...@chromium.org
Specification
https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html
Design docs
https://docs.google.com/document/d/1boT0k8BQjl7mXXzvI9SdN4XJPSza27vE8T0CNxmMhCI
Summary
Increase the nesting threshold before which
setTimeout(..., <4ms) start being clamped,
from 5 to 15. setTimeout(..., 0) is commonly
used to break down long Javascript tasks and
let other internal tasks run, which prevents
the browser from hanging. setTimeouts and
setIntervals with an interval < 4ms are not
clamped as aggressively as they were before.
This improves short horizon performance, but
websites abusing the API will still eventually
have their set setTimeouts clamped
Blink component
Blink
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink>
TAG review
TAG review status
Not applicable
Risks
Interoperability and Compatibility
setTimeout is a well established and mature
API. This change poses a risk of breaking
websites and tests that rely on the current
timing caused by clamping and the subtle task
ordering that it entails. As an example, this
change breaks assumptions about the ordering
between setTimeout(0) and unrelated tasks in
at least one case in Chrome tests
(crbug.com/1302309
<http://crbug.com/1302309>). On the flip side,
the implementation in Chrome is already non
compliant (crbug.com/1108877
<http://crbug.com/1108877>). There's also a
similar experiment on beta that is ongoing
(crbug.com/1263190
<http://crbug.com/1263190>). Devs can use
chrome://flags#unthrottled-nested-timeout to
test their sites for compatibility issues.
/Gecko/: No signal
/WebKit/: Shipped/Shipping
(https://sourcegraph.com/github.com/WebKit/WebKit/-/commit/786e3e0b252e38fb01c8db97a94d52cb0f57891e)
/Web developers/: No signals
/Other signals/:
WebView application risks
Does this intent deprecate or change behavior
of existing APIs, such that it has potentially
high risk for Android WebView-based applications?
Debuggability
setTimeout() and setInterval() have an
associated trace event in DevTools.
https://developer.chrome.com/docs/devtools/evaluate-performance/performance-reference/
Will this feature be supported on all
six Blink platforms (Windows, Mac,
Linux, Chrome OS, Android, and Android
WebView)?
No
Is this feature fully tested by
web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
No
Flag name
unthrottled-nested-timeout
Requires code in //chrome?
False
Tracking bug
https://crbug.com/1108877
Launch bug
https://launch.corp.google.com/launch/4201069
Estimated milestones
Chrome for desktop: 108
Chrome for Android: 108
Android Webview 108
Anticipated spec changes
The spec dictates a nesting threshold of 5
https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html "If
nesting level is greater than 5, and timeout
is less than 4, then set timeout to 4." Chrome
has never respected the exact behavior
(crbug.com/1108877
<http://crbug.com/1108877>), and safari
recently updated the threshold to 10
(https://github.com/WebKit/WebKit/commit/786e3e0b252e38fb01c8db97a94d52cb0f57891e).
A potential change to the spec is to make the
threshold "implementation dependent" to match
reality.
Link to entry on the Chrome Platform
Status
https://chromestatus.com/feature/5710690097561600
Links to previous Intent discussions
Ready for Trial:
https://groups.google.com/a/chromium.org/g/blink-dev/c/-TjeYs7shTQ/m/FhJq0mQyDAAJ
Intent to Experiment:
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALoDvsZNwh5uBANxryWHCdgFVFCts6noKSU9FY1BcqYH0%3D55sg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALoDvsZNwh5uBANxryWHCdgFVFCts6noKSU9FY1BcqYH0=5...@mail.gmail.com>
Intent to Extend Experiment:
https://mail.google.com/mail/u/0/#search/in%3Asent+settimeout/KtbxLzGLjTQPrFFjRfPrfQCtcCmwvTksJV
<https://mail.google.com/mail/u/0/#search/in:sent+settimeout/KtbxLzGLjTQPrFFjRfPrfQCtcCmwvTksJV>
This was previously enabled through
field-trial on Beta 50% and Stable 1% on
M104-105, with a more aggressive nesting
threshold = 100. No breakage was reported, but
it showed small guiding metrics (startup)
regressions on Android. I'm confident that
having a lower threshold will eliminate the
adverse effects. Ideally, I would conduct
another round of field-trial, but I think
we're better off with doing a waterfall
roll-out, and experiment later on (1% stable)
to confirm no regressions:
* Gradually rolling-out to each channel at
100% has more chances of teasing out
potential brokerage and won't be perceived
as flaky failures. I will loop back after
100% beta before we hit stable.
* This will involve fewer back and forth
with blink-dev / API owners, and allow us
to benefit from performance gains sooner.
This intent message was generated by Chrome
Platform Status <https://chromestatus.com/>.
--
Hannes Payer | V8 | Google Germany GmbH | Erika-Mann Str.
33, 80636 München
Geschäftsführer: Paul Manicle, Liana Sebastian
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Diese E-Mail ist vertraulich. Falls Sie diese fälschlicherweise
erhalten haben sollten, leiten Sie diese bitte nicht an jemand
anderes weiter, löschen Sie alle Kopien und Anhänge davon und
lassen Sie mich bitte wissen, dass die E-Mail an die falsche
Person gesendet wurde.
This e-mail is confidential. If you received this communication by
mistake, please don't forward it to anyone else, please erase all
copies and attachments, and please let me know that it has gone to
the wrong person.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALoDvsZaOO4ksGXnVxgw8Zv1_modDWQWYMurYjMfs8UX0BCUUA%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALoDvsZaOO4ksGXnVxgw8Zv1_modDWQWYMurYjMfs8UX0BCUUA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/25c23fe4-a09e-1789-cb8d-02bdc42dcfe8%40chromium.org.