- From: Yoav Weiss <yoav@yoav.ws>
- Date: Wed, 20 Nov 2019 14:36:39 +0100
- To: public-web-perf <public-web-perf@w3.org>
- Cc: Ilya Grigorik <igrigorik@google.com>, Philippe Le Hegaret <plh@w3.org>, Scott Haseley <shaseley@google.com>, Nicolás Peña <npm@google.com>
- Message-ID: <CACj=BEhD3_cCjYYkfoF7CfNjOJ-4kj7r+ef-iOuRPCpMkZJLgg@mail.gmail.com>
Hey all, Minutes <https://docs.google.com/document/d/e/2PACX-1vR5LxMEKopOssn86iRToQYpqEUGkNVVko23aYh6WwjiZuvHA13Hf7kHfqYE17Bt3uMRaKVdmbf-dgz_/pub> from yesterday's meeting are now available, as well as the video <https://youtu.be/1B6sFgbIPaU>. Copying the minutes here for safe keeping: WebPerfWG call - 19 November 2019 Participants: Philippe Le Hegaret, Gillis Dubuc, Peter Hedenskog, Scott Haseley, Alex Timin, Will Hawkins, Nicolás Peña, Nic Jansma, Subatra Ashe, Benjamin De Kosnik Next Call December 5 @ 11am PST Main Thread Scheduling APIs <https://www.google.com/url?q=https://docs.google.com/presentation/d/1yLkP41BQlJw-N-6dvbEkC8JhXm8sYdlXnAORDHcBKiQ/edit%23slide%3Did.g5b43bd1ecf_0_508&sa=D&ust=1574259413801000> - Scott Haseley Scott: scheduler.postTask() API allows scheduling of prioritized tasks … Implemented v0 task-queue based prototype in Chromium … Changing to a Signal-based prototype in response to TAG feedback … Planning to go to Origin Trial to evaluate performance and broader feedback on ergonomics … Controller/Signal based design - Inspired from AbortController/AbortSignal - Removing Task objects replacing with a Promise - Removing TaskQueue … Examples of old vs. new <https://www.google.com/url?q=https://docs.google.com/presentation/d/1yLkP41BQlJw-N-6dvbEkC8JhXm8sYdlXnAORDHcBKiQ/edit%23slide%3Did.g78f96ea603_0_19&sa=D&ust=1574259413802000> - Promise is significantly simpler and less verbose - Fetch example - we pass in a Signal object (that we got from AbortController) and that enables aborting fetches later - Changed the API to add a new object TaskController that has a signal - Relationships are now exposed by sharing a signal … What’s controller priority? - TaskController allows you to change priorities, on top of just aborting everything that shares a signal - Allows Fetch reprioritization as well as task reprioritization in general Yoav: So from a Priority Hints perspective, that would give us reprioritization? Scott: Yes Yoav: If I want to create a task that would propagate other signals to subtasks, this will enable that? Scott: Yup. Also cases where you’d want the signal and priority to differ, so we want to pass along an explicit priority … Signals are read-only - easy to pass and help to resolve the priority inversion problem … Task/SubTask vs. TaskQueue model - Signals are better for Task/SubTask, and can be used to model task queues, even if it’s clunky … Exploring options around signal propagation (getting current signal, inheriting, etc). This has some risk of misuse/footgun … Still seeking feedback from other implementers Will/Ben: Defer to Boris who has been tracking it closer Ben: Interested teasing out the difference between Abort and Signal propagation Safari/Edge not present LongTasks Interaction w/ Buffered Flag Nicolás: Chrome planning to ship buffering of LongTasks from start of page and available via PO … PerformanceObserver.observe({ buffered:true }) … Earlier thought there would be overhead related to their computation, but then realized that they are being measured anyway? … Is the same true for Firefox? … If so, and we’re willing to move forward with it, what would be the initial buffer size? … No data on per-frame long tasks in Chrome, but data on onload … Time to load event 90p is less than 10 seconds, so at a maximum less than 200 LTs … Does a buffer size of 200 sounds reasonable? Nic: 200 seems reasonable. Akamai can look to see what the distribution is, but don’t have the initial LTs. Gilles: Customers with LT buffering in head? Nic: No major ones Yoav: Maybe we could do some math based on the time in which the PO was registered as well as the number of LTs that happened after it. Nic: No need to store the ones after PO Yoav: True, but it can help us estimate Gilles: p90 for load event is 20-30 seconds. Need to evaluate methodology Nicolás: Working on gathering data but will take some time Yoav: we could also change the buffer size afterwards, if it’s too small Nicolás: Ideally, we would like to avoid it, but possible Nic: 200 sounds like a decent number Ben: calculation sounds simple and fine. Why is Gilles seeing 3x the numbers though? Gilles: More users from slower countries? If we’d hit the limit often we’d let you know Yoav: CrUX data? Nicolas: Might not have onload Nic: Akamai customer have a 95p long task number of ~30. Gilles: So, I guess 200 sounds reasonable and we’ll let you know if we hit the limit Ben: Sounds reasonable Nicolás: Great, I’ll update the registry TAO and Fetch integration https://github.com/whatwg/fetch/pull/955 <https://www.google.com/url?q=https://github.com/whatwg/fetch/pull/955&sa=D&ust=1574259413808000> Nicolás: Trying to integrate TAO into Fetch. Has a PR for it, but there were no tests and needed to file browser bugs for the changes … 2 changes are: 1. Instead of same origin checks we now check “response tainting” which is a Fetch concept that’s pretty close to same-origin check 2. Using the “serialize the origin” method that returns null is the origin is tainted - which means there are two origin crosses in the redirect chain. Once it’s set the TAO header must be “*” and maybe “null” … The goal is to align with CORS, but will result in changes to the processing of TAO, so heads-up on upcoming browser bugs … Analytics providers can shout at us if the change will be breaking TAO Nic: We will notice Nicolás: main change is requiring a “*” for cross origin redirects Nic: All I see is stars! Nicolás: Great Yoav: Motivation is alignment with CORS and have CORS imply TAO. Not aware of security issues that require those restrictions, but aligning with CORS will give us more content. Ben: High level goals sound great, need to dig in to better understand. Yoav: Also, in CORS “*” is simplifying the processing model as well as they don’t support a list of origins. For TAO, we just want to align unless it breaks something significant. On Mon, Nov 18, 2019 at 11:42 AM Yoav Weiss <yoav@yoav.ws> wrote: > Hey all, > > Please join <https://meet.google.com/agz-fbji-spp> us tomorrow to talk > performance! > > On the agenda > <https://docs.google.com/document/d/10dz_7QM5XCNsGeI63R864lF9gFqlqQD37B4q8Q46LMM/edit?pli=1#heading=h.pdptt3pnkl1w> > : > * Scheduling API updates > * Longtasks and buffered flag > * TAO integration with Fetch > > Note that as always, the call will be recorded and posted online. > > See y'all tomorrow! :) > Yoav >
Received on Wednesday, 20 November 2019 13:37:00 UTC