New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 818843 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Email to this user bounced
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug-Regression



Sign in to add a comment

82.6 KiB regression in resource_sizes (MonochromePublic.apk) at 540928:540928

Project Member Reported by huangs@google.com, Mar 5 2018

Issue description

Caused by “Statically allocate built-in function symbols” from angle-chromium-autoroll

Commit: f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661

Link to size graph: https://chromeperf.appspot.com/group_report?keys=agxzfmNocm9tZXBlcmZyFAsSB0Fub21hbHkYgICQkvX4vwoM

Debugging size regressions is documented at: https://chromium.googlesource.com/chromium/src/+/master/docs/speed/apk_size_regressions.md#Debugging-Apk-Size-Increase

Based on the graph: 82 KiB of native code.

The commit points to a 4-CL Angle roll, but the most likely cause is 

https://chromium-review.googlesource.com/c/angle/angle/+/924155

which contains a 13,140-line auto-generated file.

It looks like this increase was probably unexpected or might be avoidable.
Please have a look and either:

1. Close as “Won't Fix” with a short justification, or
2. Land a revert / fix-up.


 
All graphs for this bug:
  https://chromeperf.appspot.com/group_report?bug_id=818843

(For debugging:) Original alerts at time of bug-filing:
  https://chromeperf.appspot.com/group_report?sid=63f0710ee670c42c30106b290d19db66b1c76895ca3c2b34c9e6e30282e9bcd2


Bot(s) for this bug's original alert(s):

Android Builder
Assigning to angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com because this is the only CL in range:
Roll src/third_party/angle/ 78e39b3fd..f0e89be69 (4 commits)

https://chromium.googlesource.com/angle/angle.git/+log/78e39b3fd675..f0e89be69906

$ git log 78e39b3fd..f0e89be69 --date=short --no-merges --format='%ad %ae %s'
2017-11-08 cwallez Use packed enums for the texture types and targets, part 1
2018-02-08 oetuaho Statically allocate built-in function symbols
2018-03-05 oetuaho Last case in switch statement can't be empty in ESSL 3.10
2018-02-28 jmadill Vulkan: Fix Texture attachment state changes.

Created with:
  roll-dep src/third_party/angle


The AutoRoll server is located here: https://angle-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.


CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
TBR=ynovikov@chromium.org

Change-Id: I2b7bfee876909857d925aaf205198b57a20e5b36
Reviewed-on: https://chromium-review.googlesource.com/949662
Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#540928}

Comment 3 by huangs@google.com, Mar 5 2018

Cc: jmad...@chromium.org
Owner: oetu...@nvidia.com
To see break-down, run:

tools/binary_size/diagnose_bloat.py --cloud f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661

Results:
******************************Native Diff******************************
Common Metadata:
    apk_file_name=apks/MonochromePublic.apk
    elf_arch=arm
    elf_file_name=lib.unstripped/libmonochrome.so
    gn_args=ffmpeg_branding="Chrome" goma_dir="/b/build/slave/cache/goma_client" is_chrome_branded=true is_debug=false is_official_build=true proprietary_codecs=true strip_absolute_paths_from_debug_symbols=true symbol_level=1 target_os="android" use_goma=true
    map_file_name=lib.unstripped/libmonochrome.so.map.gz
    tool_prefix=third_party/llvm-build/Release+Asserts/bin/llvm-
Old Metadata:
    apk_size=64241048
    elf_build_id=09ee1e751f8f50f44371aebf4cae19ef4eff5fc3
    elf_mtime=2018-03-05 16:19:56
    git_revision=034c0d5832302cb22ddcc037494478090013b198
New Metadata:
    apk_size=64325588
    elf_build_id=ffcd0de69fdc4df13fc522c0cba974a7b691cfb4
    elf_mtime=2018-03-05 16:30:58
    git_revision=f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661

Section Sizes (Total=82.6kb (84540 bytes)):
    .bss: 0 bytes (0 bytes) (not included in totals)
    .data: 43.4kb (44416 bytes) (52.5%)
    .data.rel.ro: 14.5kb (14896 bytes) (17.6%)
    .other: 3.14kb (3214 bytes) (3.8%)
    .pak.nontranslated: 0 bytes (0 bytes) (0.0%)
    .pak.translations: 0 bytes (0 bytes) (0.0%)
    .rel.dyn: 6.52kb (6674 bytes) (7.9%)
    .rodata: 14.3kb (14688 bytes) (17.4%)
    .text: 640 bytes (640 bytes) (0.8%)

1831 symbols added (+), 161 changed (~), 86 removed (-), 661034 unchanged (not shown)
Of changed symbols, 1938 grew, 140 shrank
Number of unique symbols 498598 -> 500312 (+1714)
0 paths added, 1 removed, 9 changed

Showing 2,078 symbols (232 -> 1,987 unique) with total pss: 74640 bytes
Histogram of symbols based on PSS:
    (-16384,-8192]: 1   (-128,-64]: 26   (-8,-4]: 44    [1,2): 4       [16,32): 579    [2048,4096): 1
     (-4096,-2048]: 1    (-64,-32]: 19   (-4,-2]: 14    [2,4): 16      [32,64): 304   [8192,16384): 1
      (-1024,-512]: 1    (-32,-16]: 12   (-2,-1]: 11    [4,8): 36     [64,128): 408
       (-256,-128]: 1     (-16,-8]: 10     (0,1): 3    [8,16): 585   [128,256): 1
.text=640 bytes  .rodata=14.3kb     .data.rel.ro=14.5kb     .data=43.4kb     .bss=0 bytes    .pak.translations=0 bytes    .pak.nontranslated=0 bytes    .other=0 bytes    total=72.9kb
Number of unique paths: 12

Section Legend: t=.text, r=.rodata, R=.data.rel.ro, d=.data, b=.bss, p=.pak.translations, P=.pak.nontranslated, o=.other
Index | Running Total | Section@Address | Δ PSS (Δ size_without_padding) | Path
------------------------------------------------------------
+ 0)      11184 (15.0%) t@0x1ac613c  11184 (0->11184)   third_party/angle/src/compiler/translator/SymbolTable_autogen.cpp
               sh::TSymbolTable::insertBuiltInFunctions
- 1)       1410 (1.9%)  t@0x0        -9774 (9772->0)    third_party/angle/src/compiler/translator/SymbolTable.cpp
               sh::TSymbolTable::initializeBuiltInFunctions
+ 2)       4154 (5.6%)  t@0x1ac8cec  2744 (0->2744)     third_party/angle/src/compiler/translator/SymbolTable_autogen.cpp
               sh::TSymbolTable::insertBuiltInFunctionUnmangledNames
- 3)       1876 (2.5%)  t@0x0        -2278 (2276->0)    third_party/angle/src/compiler/translator/SymbolTable.cpp
               sh::TSymbolTable::insertBuiltIn

... (SNIP) ...

+ 26)      3572 (4.8%)  d@0x27b76e0  112 (0->112)       third_party/angle/src/compiler/translator/SymbolTable_autogen.cpp
               .L_MergedGlobals.1922

I  64750 Creating: Resource Sizes Diff

******************************Resource Sizes Diff******************************
MonochromePublic.apk_Breakdown (+84,540 bytes)
   +84,540 bytes Native code size
MonochromePublic.apk_Specifics
   +84,540 bytes normalized apk size
   +84,540 bytes main lib size

I  64753 See detailed diff results here: out/binary-size-results/diffs/034c0d5832302cb22ddcc037494478090013b198..f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661/diff_results.txt

Diff Summary
    +84540 bytes MonochromePublic.apk_Specifics normalized apk size for range: 034c0d5832302cb22ddcc037494478090013b198..f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661
I  64753 Enter supersize console via: tools/binary_size/supersize console out/binary-size-results/034c0d5832302cb22ddcc037494478090013b198/MonochromePublic.apk.size out/binary-size-results/f42c6ef5cd00c8b9d47e01fd905ece3a4cd3f661/MonochromePublic.apk.size

Comment 4 by oetu...@nvidia.com, Mar 12 2018

Components: Internals>GPU>ANGLE
Status: WontFix (was: Assigned)
The code size increase was expected. It buys us vastly increased initialization performance - by our estimates ANGLE shader compiler now initializes in almost 50% less time as before. The code size increase is also compensated by a reduction in run-time memory use.

Further work is also going to mitigate the code size increase. There are already patches in review that depend on having the autogenerated code, each shaving off a few kilobytes of code, and more are on the way.

Sign in to add a comment