Pardon my ignorance: which of these proposed alternatives will have observable differences in behavior (other than speed of transfer) between same-process vs cross-process?
In general, I agree with the sentiment of focusing on optimizing the same-process case and just getting the cross-process case to a working state. It would probably be useful to add UMA metrics to see how often we do need to serialize these cross-process (and how long it takes?).
DanielOn Tue, Sep 1, 2015 at 9:49 AM Joshua Bell <jsb...@chromium.org> wrote:Great write-up, Hiroki!I would not want us to ship optimized same-process if the behavior observed by script differs from cross-process.
That implies we should do option #1 first, so we have the correct semantics and can get tests running. (Unless I'm missing something, that basically just means we neuter any buffers in the transferrables array, and otherwise leave the pipeline as-is.)
Everything after that can be data-driven optimization.Otherwise, I agree with Kinuko: the same-process case seems to be where we'll get the most developer benefit. The use case I hear about most often is games and other perf-critical single-page/multi-worker apps, but additional data on what scenarios are important would be welcome.Possible follow-up questions: How does FF optimize these cases? Would these proposed approaches play well with the WebAsm thinking?
As an aside, we may want to work with devrel to document any implicit limits (e.g. 128MB IPCs). It comes up for IDB every so often.
On Tue, Sep 1, 2015 at 1:44 AM, Kinuko Yasuda <kin...@chromium.org> wrote:Thanks Hiroki for sending this!I feel that developer's general interests would be:1) optimize the same-process case in general (discussion #2)2) make it work in general, as it doesn't work at all (option #1 or #2)3) optimize the cross-process case (option #3)While necessary engineering cost would be (the latter is bigger):option #1 < option #2 << option #3 <<< discussion #2
I'm not really sure if we want to invest on 3) (option #3) yet. Do people in site-isolation-dev@ have some idea/interest about priorities on this? If not I think starting with option #2 for now sounds like a reasonable plan.Would we be able to know how much performance gain we could have by doing option #2 (or #3) over #1? Say, would we be able to locally measure how much it takes for serializing and copying X size of buffer? If doing some preliminary measurement is not that hard it'd be helpful to have some actual numbers.