• Benoit L's avatar
    Reland "android: Don't parse /proc/self/maps to prefetch the library." · ff4e4bf5
    Benoit L authored
    This reverts commit 733c2818.
    
    Reason for reland: The initial change is actually an improvement, see
    the linked bug.
    
    Original change's description:
    > Revert "android: Don't parse /proc/self/maps to prefetch the library."
    >
    > This reverts commit ef6f0fb3.
    >
    > Reason for revert: Regressed startup performance.
    > See https://chromeperf.appspot.com/report?sid=9df0ec76b0fffc74931cc7bdcf44cd4d540f81bb34ccde3571c2211ec8360ee6&start_rev=531281&end_rev=531574
    >
    > Original change's description:
    > > android: Don't parse /proc/self/maps to prefetch the library.
    > >
    > > This commit changes the behavior of the native library prefetcher to
    > > rely on sentinel symbols rather than parsing /proc/self/maps.
    > >
    > > Behavior changes:
    > > 1. This will make the code no longer prefetch .data (because we don't
    > >    look for it in the mappings), neither the sections that are part of
    > >    the same mapping as .text (for instance, .rodata when using
    > >    ld.gold). This is intended.
    > > 2. As a consequence, the UMA metric
    > >    LibraryLoader.PercentageOfResidentCodeBeforePrefetch will move, as
    > >    both sides of the ratio will change, and the population will change
    > >    slightly as well (since code is currently not correctly ordered on
    > >    ARM64 and x86_64)
    > >
    > > - Removes the reliance on a somewhat brittle parsing of a file
    > > - Parsing /proc/self/maps costs ~50ms of CPU on a Nexus 5X (on a little
    > >   core, as this is triggered from an AsyncTask)
    > > - Allows to only fetch part of the native library (in a forthcoming CL)
    > >
    > > Rationale:
    > > Change-Id: I0bb7b28af3c3bd4af5745e2ebcc1fbf283bcc0c1
    > > Reviewed-on: https://chromium-review.googlesource.com/874470
    > > Commit-Queue: Benoit L <lizeb@chromium.org>
    > > Reviewed-by: Egor Pasko <pasko@chromium.org>
    > > Reviewed-by: agrieve <agrieve@chromium.org>
    > > Reviewed-by: Matthew Cary <mattcary@chromium.org>
    > > Cr-Commit-Position: refs/heads/master@{#531515}
    >
    > TBR=pasko@chromium.org,agrieve@chromium.org,lizeb@chromium.org,mattcary@chromium.org
    >
    > Change-Id: I11d7cd7898d5f8d8fbebf391eba5fdaca154c08a
    > No-Presubmit: true
    > No-Tree-Checks: true
    > No-Try: true
    > Reviewed-on: https://chromium-review.googlesource.com/886321
    > Reviewed-by: Benoit L <lizeb@chromium.org>
    > Commit-Queue: Benoit L <lizeb@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#531858}
    
    TBR=pasko@chromium.org,agrieve@chromium.org,lizeb@chromium.org,mattcary@chromium.org
    Bug: 805883
    
    Change-Id: Ida889088ec69c09f4dd95dd976174b5532811a53
    No-Presubmit: true
    No-Tree-Checks: true
    No-Try: true
    Reviewed-on: https://chromium-review.googlesource.com/886621
    Commit-Queue: Benoit L <lizeb@chromium.org>
    Reviewed-by: default avatarBenoit L <lizeb@chromium.org>
    Reviewed-by: default avatarMatthew Cary <mattcary@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#531880}
    ff4e4bf5
library_prefetcher_unittest.cc 1.42 KB