New issue
Advanced search Search tips

Issue 897573 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 1
Type: Bug-Regression

Blocking:
issue 757974



Sign in to add a comment

r598874 "Ship SwiftShader on macOS" caused a 5.6MB regression in Chromium.app size

Project Member Reported by tapted@chromium.org, Oct 22

Issue description

sugoi: please investigate.

Graphs: https://chromeperf.appspot.com/report?sid=cc19f141b6cc7e013939a2e9a4b8284dee1472b566d8b0406fe37c5db9c46204&start_rev=585375&end_rev=601473

There are non-overlapping ranges, but SwiftShader is in both bisects so seems a likely culprit

https://chromium.googlesource.com/chromium/src/+log/e710ed925998c4102021134160ad20af8d468b64..416efd393ece6198930fd4c52047d7a08cf7536f
https://chromium.googlesource.com/chromium/src/+log/55f1e51a8e070c0e45d45f2093d1fb7ba9cba6ae%5E..c0fa9d678dc3e20dbb96144aa1bb4d0976747bd4?pretty=fuller&n=1000

that second one has a commit and a revert - likely the bot is leaving stale build files for the sizes script.

Related:
 -  Issue 892460  (charts not updating)
 -  Issue 891992  (a clang sizes regression that hasn't fully resolved yet).

10MB is a lot. 5% of Chrome's size.

E.g. Are these libraries properly optimized and stripped of debugging symbols?
 
Screenshot from 2018-10-22 16-00-38.png
139 KB View Download
Cc: ccameron@chromium.org
clickable r598874 -> https://chromium-review.googlesource.com/c/chromium/src/+/1276550

(maybe nico has a sense of build flags that might be missing).

(and +ccameron may have some mac-specific gpu guidance/context).
Blocking: 757974
Description: Show this description
Cc: rsesek@chromium.org
Hi all. Originally, the libraries themselves were around 2.3 Mb (same as other platforms), but it was requested that the library's symbols from SwiftShader on MacOS get uploaded to our Crash server, which I did. Does this affect the size of the shipped binary?

ccameron@, rsesek@, can you help? I have no idea how to check specifically what gets shipped on MacOS and this is probably trivial for you guys.
The libraries are only about 2.4MB:

% ls -lh /Applications/Google\ Chrome\ Canary.app/Contents/Versions/72.0.3588.0/Google\ Chrome\ Framework.framework/Libraries/
total 11512
drwxrwxr-x  4 rsesek  admin   136B Oct 22 02:50 MEIPreload
drwxrwxr-x  4 rsesek  admin   136B Oct 22 02:50 WidevineCdm
-rwxrwxr-x  1 rsesek  admin    20K Oct 21 23:33 libEGL.dylib
-rwxrwxr-x  1 rsesek  admin   3.2M Oct 21 23:33 libGLESv2.dylib
-rwxrwxr-x  1 rsesek  admin    73K Oct 21 23:42 libswiftshader_libEGL.dylib
-rwxrwxr-x  1 rsesek  admin   2.3M Oct 21 23:43 libswiftshader_libGLESv2.dylib

So I'm not sure how that's getting to 10MB. Would probably need to do a build with and without the suspect change, then compare the results.
> but it was requested that the library's symbols from SwiftShader on MacOS get uploaded to our Crash server, which I did. Does this affect the size of the shipped binary?

No, it doesn't. But because these are being shipped as dylbs they do have symbols rather than being fully stripped like Chrome Framework.
Summary: r598874 "Ship SwiftShader on macOS" caused a 5.6MB regression in Chromium.app size (was: r598874 "Ship SwiftShader on macOS" caused a 10MB regression in Chromium.app size)
Sorry - my chart reading skills failed. 10MB includes the delta from  Issue 891992  and some extra laziness on my part.

This one is

197046000 -> 202936000

so closer to 5.9MiB / 5.6MB. Still bad. This seems to agree with sum{*.dylib} in #c5.

The commits at, e.g., https://crbug.com/757974#c24 have notes like "This increases the official build size by about 44KB", so it seems this is being tracked.

If it's an intentional/approved regression that's probably OK. But perhaps still worth looking into.

For example, can these dylibs be built with fewer exported symbols?

Or is there a specific symbol that Chrome dlopen()s? Maybe that can be listed in a file passed to `strip -s <dlopen-syms> libGLESv2.dylib` to cut out code in the dylib that will never execute. (disclaimer: I've never done this and don't know if it will achieve anything here :).

Or can we statically link these into Chrome, and what's the diff/payoff of doing that?
Note the linker flags being used for these swiftshader libs is being raised on the other recent sizes regression -  Issue 891992  - for some warnings that are triggered whilst trying to resolve the regression there.

Comment 9 by agrieve@chromium.org, Jan 21 (2 days ago)

Components: -Tools>BinarySize
Labels: Performance-Size

Sign in to add a comment