New issue
Advanced search Search tips

Issue 849316 link

Starred by 1 user

Issue metadata

Status: Untriaged
Owner: ----
Cc:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug

Blocking:
issue 835323



Sign in to add a comment

Investigate synchronous IO during browser startup

Project Member Reported by skyos...@chromium.org, Jun 4 2018

Issue description

In go/hello-chrome-hackathon we discovered about 200ms worth of synchronous IO during browser startup, which delays code execution on the UI and other threads. We should find out 1) which file is being read from and 2) assuming this is the native binary, which symbols are being faulted on.
 
Labels: OS-Android

Comment 2 by pasko@chromium.org, Jun 4 2018

Looking at pagecache page-in offsets has been always in my low-priority list as something to ensure that access is actually sequential in the beginning. It's been low priority because it requires some kernel-fu, additionally page-by-page analysis on top of that (with some expected IO-randomness shortly after messageloop start).

So I was not sure what are benefits, beyond nice graphs like Firefox had with their ordering..

Comment 3 by lizeb@chromium.org, Jun 5 2018

Do you have a trace that shows this?
It might be related to a change I made during the hackathon (only prefetch the ordered section of code).

Outside this, knowing which symbols we call is fairly easy, by running with an instrumented binary (that we use to generate the orderfile), and collecting the resulting profile. There is some distortion from the instrumentation runtiome (fairly small) and size (>5M) overhead, but at least you get the full list.

Note that this will overestimate the issue, as the prefetcher is typically done a couple 100s of ms after library load, and then we no longer have major page faults for code.
This trace was taken from the Wednesday build during the hackathon:

https://drive.google.com/open?id=1gmb-p64UofCJOtw-zllPYpIcammeHAVi

This one was from the unmodified Monday build:

https://drive.google.com/open?id=1IWL1Szjncf6L7zCKaeSE5IHT7a3MeZ39

(Warning: both are O(100M) :)

Thanks for the tip about using an instrumented build to get the faulting symbols!
Both traces are from a 512MB device. IIRC the IO is less severe on 1GB.
Status: Untriaged (was: Available)
Available, but no owner or component? Please find a component, as no one will ever find this without one.

Sign in to add a comment