LGTM1 to ship. The API owners met today and it's fine to run a 50% experiment as part of the rollout. Thanks for the detailed work!
On Tue, Feb 28, 2023 at 7:32 AM Yoav Weiss <yoavwe...@chromium.org> wrote: > Thanks François for getting back to us, and I'm glad to hear we see > meaningful improvements with the 1 minute throttle. > From a web compat perspective, this *shouldn't* be highly observable, so > assuming you haven't gotten bug reports or saw an uptick in some other > metrics that can indicate this is causing an issue for backgrounded pages, > I think it's fine to experiment with this for a larger population set, to > get more meaningful results. > > In terms of the Blink process though, I'm not 100% sure what we want to do > here, given that this is an intent to ship. Maybe best to send an intent to > experiment with the exact experiment details you want to run. Would that be > too much overhead? > > On Mon, Feb 27, 2023 at 8:24 PM 'François Doray' via blink-dev < > blink-dev@chromium.org> wrote: > >> Hi blink-dev@! >> >> We experimented with the "Intensive Wake Up Throttling of Javascript >> Timers after 1 minute in Background" feature on Stable 1%. With 7 days of >> ramped up data, we observe small but statistically significant changes to >> CPU usage. In addition to these savings, this feature encourages Web >> developers to replace usage of Javascript timers with more efficient APIs >> <https://developer.chrome.com/blog/timer-throttling-in-chrome-88/#workarounds> >> . >> >> Could we ramp up the experiment to 50% of stable to measure the savings >> with smaller confidence intervals? In particular, we don't expect to be >> able to capture battery life improvements with 1% of stable. >> >> Thanks, >> >> Francois >> On Monday, December 5, 2022 at 11:28:25 AM UTC-5 François Doray wrote: >> >>> Hi API owners, >>> >>> I agree that using a 1 minute grace period (instead of 10 seconds) is >>> less risky and will likely yield similar resource savings. We'll experiment >>> with this new grace period and keep you updated with the results. >>> >>> Side note: Chains of timers on background pages can usually be replaced >>> with more resource-efficient APIs, see >>> https://developer.chrome.com/blog/timer-throttling-in-chrome-88/#workarounds. >>> We think it would be a good thing if, for example, Web content migrated >>> from polling a server to push Web Sockets in response to tighter >>> restrictions on timers. >>> >>> More details below. >>> >>> Have a nice day, >>> >>> François >>> >>> On Wed, Nov 23, 2022 at 12:03 PM Chris Harrelson <chri...@chromium.org> >>> wrote: >>> >>>> Hi, >>>> >>>> The API owners discussed this intent today. In addition to the above >>>> questions, we achieved consensus that if you were content with 1 minute >>>> instead of 10 seconds, we'd be prepared to LGTM. For 10 seconds, we have >>>> additional concerns that would require more discussion and caveats. If 1 >>>> minute achieves your goal of battery savings, could we go with that? >>>> >>> Yes we could. >>> >>> >>>> >>>> On Wed, Nov 16, 2022 at 5:15 PM Rick Byers <rby...@chromium.org> wrote: >>>> >>>>> Thinking some more about this, perhaps it really comes down to what >>>>> the nesting level >5 criteria means in practice? I guess metrics on how >>>>> common such tasks are won't be helpful because if they weren't common then >>>>> it wouldn't be attractive for power savings. But do you have anecdotal >>>>> experience suggesting that user-important events like Daniel and Philip >>>>> are >>>>> worried about tend to be a lower nesting level, while things like >>>>> analytics >>>>> and ads tracking tends to be higher nesting level? Any idea what data went >>>>> into the selection of "5" as the threshold? >>>>> >>>> For many years, the spec has said that the timeout of a timer with a >>> nesting level >5 is clamped to be >= 4ms. >>> https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers >>> We used the same criteria to apply intensive throttling. >>> >>>> >>>>> It looks like there are other important heuristics too, like timers >>>>> started in network response handlers aren't subject to throttling. This is >>>>> clearly pretty nuanced, not something I'd really trust our judgement to be >>>>> able to accurately evaluate the risk of. Rather than try to speculate on >>>>> heuristic details here, perhaps it would be more productive to try to >>>>> align >>>>> on the principals for how you're evaluating compat risk? >>>>> >>>>> In particular, no issue at 50% beta and 1% stable seems like a pretty >>>>> strong signal to me (especially relative to prior tab freezing efforts). >>>>> But how confident are you in bugs reaching you? Eg. if a tester bisects >>>>> based on a customer provided repo, is it likely to point to a CL you >>>>> landed? Or does this being under finch control mean that a bisect won't >>>>> work to identify the cause of a regression? I just searched for any bug >>>>> opened in the last 180 days which mentions setTimeout and setInterval in >>>>> the summary and didn't find anything relevant, so that's IMHO a >>>>> significant >>>>> data point in your favor. Also the example you cite from the previous >>>>> change looks like it was quickly routed to you, so a good sign. >>>>> >>>> I admit that we don't have a perfect process to ensure that bugs are >>> routed to us. If someone experiences a problem, they could manually disable >>> features enabled via Finch (listed >>> at chrome://version/?show-variations-cmd). If they filed a bug with the >>> experiment name (QuickIntensiveWakeUpThrottlingAfterLoading), we would find >>> it. But I'm not convinced that most people would do this. We should >>> probably include clear debug steps in release notes? >>> >>> >>>> >>>>> Note I think we avoid 100% trials in beta because that leaves the >>>>> stable config unvalidated, so topping out at 50% on beta seems right to >>>>> me. >>>>> But what's the launch plan after that? Will you go straight to 100% >>>>> stable >>>>> and consider backing back down if there are non-trivial reports of >>>>> breakage? Or do a gradual ramp? >>>>> >>>> We definitely want a 1% stable experiment to confirm that this change >>> has a positive impact. Ramping up to 50% stable gives us more confidence in >>> the results, but going straight to 100% stable to reduce variations between >>> Chrome clients also works. >>> >>> >>>> >>>>> Reading through the prior example you cited, I suspect the randomness >>>>> of finch trials could cause some frustration here - eg. some customers >>>>> complaining of breakage but devs being unable to reproduce it. What would >>>>> you think about ramping down the timer value predictably rather than >>>>> gradually ramping up the finch trial? I.e. drop 100% of stable users from >>>>> 5 >>>>> minutes to 2 minutes first? Perhaps a few weeks at 2 minutes, then 30 >>>>> seconds without issue would be enough to reduce fear of going to 10 >>>>> seconds >>>>> while still giving predictability to developers trying to figure out >>>>> what's >>>>> going on? >>>>> >>>> Gradually reducing the grace period for 100% of stable wouldn't let us >>> confirm that the intervention has a positive impact. What do you think of >>> experimenting with the target grace period for 1% stable to confirm impact, >>> and then launching by gradually reducing the grace period for 100% of >>> stable until we reach the target? >>> >>> >>>> >>>>> Rick >>>>> >>>>> On Wed, Nov 16, 2022 at 12:13 PM Daniel Bratell <brat...@gmail.com> >>>>> wrote: >>>>> >>>>>> Hi François, >>>>>> >>>>>> We [MikeT, Rick, Yoav, Chris and I] discussed this on the API Owners >>>>>> meeting and there were some things affecting user experience I was >>>>>> concerned about. >>>>>> >>>>>> Looking at the maximum perceived impact to the user, that would be >>>>>> that the user is putting a tab in the background, but expecting some kind >>>>>> of event in a couple of seconds. If that event depends on the throttled >>>>>> timers, that event could, worst case, with this change be delayed from 10 >>>>>> seconds to 1 minute (or 10 seconds + 1 minute?). Before this change, >>>>>> worst >>>>>> case would be that some event would be delayed from 5 minutes to 6 >>>>>> minutes. >>>>>> >>>>>> I consider, from a usage perspective, a delay from 5 to 6 minutes >>>>>> (worst case) acceptable if there are other benefits to the delay, but a >>>>>> change from 10 seconds to 1 minute (worst case) seems much more impactful >>>>>> since it would be fivefold increase in waiting time. >>>>>> >>>>>> Considering that, have you investigated if there is some kind of >>>>>> middle ground where a smaller change would get more or less the same >>>>>> benefit to battery life? Or is there some other more advanced gradual >>>>>> throttling that could make the worst case less bad? Or do you have data >>>>>> that shows that my concern is irrelevant in some way? >>>>>> >>>>>> /Daniel >>>>>> >>>>>> On 2022-11-11 17:56, François Doray wrote: >>>>>> >>>>>> We are experimenting on 1% stable since the beginning of October 2022 >>>>>> (M106+). We are also experimenting on 50% of Canary/Dev/Beta since June >>>>>> 2022. Enabling on 100% of Canary/Dev/Beta for a few milestones sgtm, if >>>>>> we >>>>>> think it will help identifying issues. So far, no bug reports have been >>>>>> routed to me. >>>>>> >>>>>> Note: Only timers with a "nesting level >>>>>> <https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timer-nesting-level>" >>>>>> greater than 5 are affected. A timer set from the visibilitychange event >>>>>> handler, for example, won't be affected. >>>>>> >>>>>> >>>>>> On Wed, Nov 9, 2022 at 12:02 PM Philip Jägenstedt < >>>>>> foo...@chromium.org> wrote: >>>>>> >>>>>>> The potential compat risk of this seems significant, if it means >>>>>>> that pages can start misbehaving or breaking after 10 seconds in the >>>>>>> background, which seems common in workflows like logins or ecommerce, >>>>>>> where >>>>>>> you might be flipping back and forth between tabs to find passwords, >>>>>>> confirm credit card transactions, etc. >>>>>>> >>>>>>> Have there been any bug reports from the beta experiment yet? To >>>>>>> increase confidence, can we run this experiment at 100% on beta, dev and >>>>>>> canary for a few milestones before trying it on stable? Are there any >>>>>>> other >>>>>>> ways we can gain insight on the compat risk? >>>>>>> >>>>>>> On Tue, Nov 8, 2022 at 10:10 PM François Doray <fdo...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> Contact emails jiahe...@intel.com, fdo...@chromium.org >>>>>>>> >>>>>>>> Specification >>>>>>>> https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html >>>>>>>> >>>>>>>> Design docs >>>>>>>> >>>>>>>> https://docs.google.com/document/d/1WFyfKUUxqM7uKxKOGhLiOjyY6T7QRduVcuHN0f6vJkk/edit >>>>>>>> >>>>>>>> Summary >>>>>>>> >>>>>>>> Enter Intensive Wake Up Throttling after 10 seconds if the page is >>>>>>>> fully loaded when it becomes hidden. Currently, wake ups from JS timers >>>>>>>> with a nesting level >= 5 are throttled to 1 per minute after the page >>>>>>>> has >>>>>>>> spent 5 minutes in the background [1], which is very conservative and >>>>>>>> was >>>>>>>> chosen to allow a launch of Intensive Wake Up Throttling with minimal >>>>>>>> regression risk. We're now planning to reduce this timeout to 10 >>>>>>>> seconds if >>>>>>>> the page is fully loaded when hidden. [1] >>>>>>>> https://chromestatus.com/feature/4718288976216064 >>>>>>>> >>>>>>>> >>>>>>>> Blink component Blink>Scheduling >>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EScheduling> >>>>>>>> >>>>>>>> TAG review status Not applicable >>>>>>>> >>>>>>>> Risks >>>>>>>> >>>>>>>> Interoperability and Compatibility >>>>>>>> *Gecko*: No signal >>>>>>>> >>>>>>>> *WebKit*: No signal >>>>>>>> >>>>>>>> *Web developers*: No signals >>>>>>>> >>>>>>>> *Other signals*: The more conservative version of Intensive Wake >>>>>>>> Up Throttling shipped smoothly to 100% Stable more than 1 year ago. A >>>>>>>> few >>>>>>>> bugs were filed, but in all cases we've been able to propose >>>>>>>> workarounds >>>>>>>> which made apps more efficient (example >>>>>>>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1186569#c16> >>>>>>>> ). >>>>>>>> >>>>>>>> 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? >>>>>>>> >>>>>>>> >>>>>>>> No, this feature will not ship on desktop platforms. >>>>>>>> >>>>>>>> >>>>>>>> Debuggability >>>>>>>> >>>>>>>> This is not a new Web Platform feature. >>>>>>>> >>>>>>>> >>>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)? No >>>>>>>> >>>>>>>> This feature will only ship on desktop platforms. On Android, the >>>>>>>> system severely limits resource consumption in background renderers, >>>>>>>> which >>>>>>>> makes this feature unnecessary. >>>>>>>> >>>>>>>> >>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>> ? Yes >>>>>>>> >>>>>>>> Flag name quick-intensive-throttling-after-loading >>>>>>>> >>>>>>>> Requires code in //chrome? False >>>>>>>> >>>>>>>> Tracking bug >>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1324656 >>>>>>>> >>>>>>>> Estimated milestones >>>>>>>> DevTrial on desktop >>>>>>>> >>>>>>>> Enabled by default on desktop 104 >>>>>>>> >>>>>>>> 109 >>>>>>>> Anticipated spec changes >>>>>>>> >>>>>>>> Open questions about a feature may be a source of future web compat >>>>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>>>> issues in the project for the feature specification) whose resolution >>>>>>>> may >>>>>>>> introduce web compat/interop risk (e.g., changing to naming or >>>>>>>> structure of >>>>>>>> the API in a non-backward-compatible way). >>>>>>>> >>>>>>>> >>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>> https://chromestatus.com/feature/5580139453743104 >>>>>>>> >>>>>>>> *Additional context* >>>>>>>> >>>>>>>> The 1% stable experiment shows that this feature reduces Chrome's >>>>>>>> CPU usage and extends battery life, as desired. We plan to enable it by >>>>>>>> default in M109. >>>>>>>> >>>>>>>> The 1% stable experiment is still ramping up, so we would like to >>>>>>>> keep experimenting in M108, to get small confidence intervals for all >>>>>>>> our >>>>>>>> metrics on all desktop platforms. >>>>>>>> -- >>>>>>>> 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+...@chromium.org. >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGD3t5EGWuOZgo1k5XExKpnjsRM9nacEeFMyiXkEOwW%3DkOqRUQ%40mail.gmail.com >>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGD3t5EGWuOZgo1k5XExKpnjsRM9nacEeFMyiXkEOwW%3DkOqRUQ%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+...@chromium.org. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGD3t5Fy3FRsxTwde26%3DincDr7PR%2Bz4VKowfikMkPgSxxLhScA%40mail.gmail.com >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGD3t5Fy3FRsxTwde26%3DincDr7PR%2Bz4VKowfikMkPgSxxLhScA%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+...@chromium.org. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5e54c5cf-72be-500f-c3d3-a1cf00514447%40gmail.com >>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5e54c5cf-72be-500f-c3d3-a1cf00514447%40gmail.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+...@chromium.org. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY-Kvf6341Fbyi1ggxrKDTPfrSXcfVP_9FG%2Bmk%2BKbO2ZjA%40mail.gmail.com >>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY-Kvf6341Fbyi1ggxrKDTPfrSXcfVP_9FG%2Bmk%2BKbO2ZjA%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/514eef7d-5c70-4da1-a8fb-d892f3b5e1aan%40chromium.org >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/514eef7d-5c70-4da1-a8fb-d892f3b5e1aan%40chromium.org?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/CAL5BFfUhYHKBk9nMJs7dCORDP_NZPEabrnxUe42emDJhrmkixA%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUhYHKBk9nMJs7dCORDP_NZPEabrnxUe42emDJhrmkixA%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/CAOMQ%2Bw-d3qRZ%2BtuOHBHyp%3DZ-HjnaLYyUwbNhQzjuWvwgfW2LNg%40mail.gmail.com.