New issue
Advanced search Search tips

Issue 921422 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner: ----
Closed: Jan 19
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug

Blocked on:
issue 693079



Sign in to add a comment

classes.dex has sawtooth size pattern ever since switching to r8

Project Member Reported by agrieve@chromium.org, Jan 14

Issue description

Have a look at this graph:
https://chromeperf.appspot.com/report?sid=7652282bac32b117c055caae9cee578a55fd431a2e7fe8dbaa6294b93576b832&rev=622298

Example commit from one of the teeth:
e17f9fb7f2bcfcb032621a25f9467eec1b990512 - Import wpt@2d42384cf21efd71843295d319c1bab85b3acf4a

Web Platform Tests do not affect the apk, so the reason for the sawtooth is probably to do with the fact that different machines are building the apk, and some of them behave differently from the others.

The different as shown by:
tools/binary_size/diagnose_bloat.py e17f9fb7f2bcfcb032621a25f9467eec1b990512 --cloud

Section Sizes (Total=634 bytes (634 bytes)):
    .dex: 128 bytes (128 bytes) (20.2%)
    .other: 506 bytes (506 bytes) (79.8%)
Dex:
            -8 entries fields
            -9 entries strings

513 symbols added (+), 417 changed (~), 521 removed (-), 923710 unchanged (not shown)
Added/Removed by section: .dex: -8 .dex.method: +0
Of changed symbols, 911 grew, 540 shrank
Number of unique symbols 572806 -> 572798 (-8)

Section Legend: t=.text, r=.rodata, R=.data.rel.ro, d=.data, b=.bss, x=.dex, m=.dex.method, p=.pak.translations, P=.pak.nontranslated, o=.other
Index | Running Total | Section@Address | Δ PSS (Δ size_without_padding) | Path
------------------------------------------------------------
+ 0)        908 (143.2%) m@0x0        908 (0->908)       chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java
               DateOrderedListMediator#lambda$shareItemsInternal$1$DateOrderedListMediator
- 1)          0 (0.0%)  m@0x0        -908 (908->0)      chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java
               DateOrderedListMediator#lambda$shareItemsInternal$419$DateOrderedListMediator
+ 2)        731 (115.3%) m@0x0        731 (0->731)       third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedrequestmanager/FeedRequestManager.java
               FeedRequestManager#lambda$executeRequest$2$FeedRequestManager
- 3)          0 (0.0%)  m@0x0        -731 (731->0)      third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedrequestmanager/FeedRequestManager.java
               FeedRequestManager#lambda$executeRequest$37$FeedRequestManager
+ 4)        558 (88.0%) m@0x0        558 (0->558)       chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
               DownloadLocationDialogBridge#lambda$showDialog$0$DownloadLocationDialogBridge
- 5)          0 (0.0%)  m@0x0        -558 (558->0)      chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
               DownloadLocationDialogBridge#lambda$showDialog$409$DownloadLocationDialogBridge
+ 6)        533 (84.1%) m@0x0        533 (0->533)       chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
               OfflinePageDownloadBridge#lambda$openItem$0$OfflinePageDownloadBridge
- 7)          0 (0.0%)  m@0x0        -533 (533->0)      chrome/android/java/src/org/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge.java
               OfflinePageDownloadBridge#lambda$openItem$540$OfflinePageDownloadBridge
+ 8)        529 (83.4%) m@0x0        529 (0->529)       third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedmodelprovider/internal/ModelChildBinder.java
               ModelChildBinder#lambda$bindChildren$0$ModelChildBinder
- 9)          0 (0.0%)  m@0x0        -529 (529->0)      third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedmodelprovider/internal/ModelChildBinder.java
               ModelChildBinder#lambda$bindChildren$34$ModelChildBinder
+ 10)       516 (81.4%) m@0x0        516 (0->516)       chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
               ChromeActivity#lambda$addOrEditBookmark$12$ChromeActivity
- 11)         0 (0.0%)  m@0x0        -516 (516->0)      chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
               ChromeActivity#lambda$addOrEditBookmark$19$ChromeActivity
~ 12)       506 (79.8%) o@0x0        506 (0->0)         {no path}
               Overhead: APK file
+ 13)       943 (148.7%) m@0x0        437 (0->437)       third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedstore/internal/PersistentFeedStore.java
               PersistentFeedStore#lambda$triggerContentGc$1$PersistentFeedStore
- 14)       506 (79.8%) m@0x0        -437 (437->0)      third_party/feed/src/src/main/java/com/google/android/libraries/feed/feedstore/internal/PersistentFeedStore.java
               PersistentFeedStore#lambda$triggerContentGc$61$PersistentFeedStore
+ 15)       925 (145.9%) m@0x0        419 (0->419)       chrome/android/java/src/org/chromium/chrome/browser/preferences/download/DownloadDirectoryAdapter.java
               DownloadDirectoryAdapter#lambda$update$0$DownloadDirectoryAdapter
- 16)       506 (79.8%) m@0x0        -419 (419->0)      chrome/android/java/src/org/chromium/chrome/browser/preferences/download/DownloadDirectoryAdapter.java
               DownloadDirectoryAdapter#lambda$update$408$DownloadDirectoryAdapter
+ 17)       917 (144.6%) m@0x0        411 (0->411)       chrome/android/java/src/org/chromium/chrome/browser/widget/ListMenuButton.java
               ListMenuButton#lambda$onFinishInflate$0$ListMenuButton
- 18)       506 (79.8%) m@0x0        -411 (411->0)      chrome/android/java/src/org/chromium/chrome/browser/widget/ListMenuButton.java
               ListMenuButton#lambda$onFinishInflate$103$ListMenuButton
+ 19)       916 (144.5%) m@0x0        410 (0->410)       chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java
               IncognitoNotificationService#lambda$onHandleIntent$1$IncognitoNotificationService
- 20)       506 (79.8%) m@0x0        -410 (410->0)      chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java
               IncognitoNotificationService#lambda$onHandleIntent$504$IncognitoNotificationService
+ 21)       907 (143.1%) m@0x0        401 (0->401)       android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
               AwBrowserProcess#lambda$start$0$AwBrowserProcess
- 22)       506 (79.8%) m@0x0        -401 (401->0)      android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
               AwBrowserProcess#lambda$start$45$AwBrowserProcess
+ 23)       883 (139.3%) m@0x0        377 (0->377)       chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java
               OMADownloadHandler#lambda$showOMAInfoDialog$0$OMADownloadHandler
- 24)       506 (79.8%) m@0x0        -377 (377->0)      chrome/android/java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java
               OMADownloadHandler#lambda$showOMAInfoDialog$397$OMADownloadHandler
- 25)       155 (24.4%) m@0x0        -351 (351->0)      chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java



Looking at the subsequent commit, the diff is exactly reversed.
Probably something we'll need r8-team to investigate.



 
Status: ExternalDependency (was: Available)
Cc: smaier@chromium.org
I don't think this is r8's fault actually.

I ssh'ed into two slaves that formed a peak, and the input .jar files are different.

Seems the bots have different java versions:
* 1.8.0_45-internal (Oracle Corporation)
vs
* 1.8.0_162 (Oracle Corporation)
Cc: -r8-team@google.com
Components: -Build Infra>Client>Chrome
Status: Untriaged (was: ExternalDependency)
Putting into infra queue.
Blockedon: 693079
Project Member

Comment 6 by bugdroid1@chromium.org, Jan 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/28543d8fe6777cfa45a11cf7e028a4b86f89b9f0

commit 28543d8fe6777cfa45a11cf7e028a4b86f89b9f0
Author: Andrew Grieve <agrieve@chromium.org>
Date: Wed Jan 16 00:36:53 2019

Revert "Android: Parallelize Error Prone"

This reverts commit 3cc62d6500b11c4ac271832766140fc9000e0331.

Reason for revert: Our bots don't have a consistent javac version

Original change's description:
> Android: Parallelize Error Prone
>
> Run two compile_java steps in parallel, one without errorprone (~20s) to
> unblock subsequent build steps (desugar, bytecode rewriting, dexing),
> and one with errorprone (if enabled) to check the build (~40s).
>
> This saves approximately 19 seconds for the overall incremental build of
> chrome_java.
>
> Bug: 906803
> Change-Id: I4dee29c246bbc65791088dcc5e38d1030310c466
> Reviewed-on: https://chromium-review.googlesource.com/c/1346992
> Commit-Queue: Peter Wen <wnwen@chromium.org>
> Reviewed-by: agrieve <agrieve@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#610477}

Bug: 906803, 693079,  921422 
Change-Id: I3a09313563dd702c6fff4f351602d6f80bbf883e
Reviewed-on: https://chromium-review.googlesource.com/c/1412273
Reviewed-by: Eric Stevenson <estevenson@chromium.org>
Commit-Queue: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622934}
[modify] https://crrev.com/28543d8fe6777cfa45a11cf7e028a4b86f89b9f0/build/android/gyp/javac.py
[modify] https://crrev.com/28543d8fe6777cfa45a11cf7e028a4b86f89b9f0/build/config/android/internal_rules.gni

Comment 7 by wnwen@chromium.org, Jan 16 (6 days ago)

From what I can see, the revert did not change the sawtooth pattern: https://chromeperf.appspot.com/report?sid=7652282bac32b117c055caae9cee578a55fd431a2e7fe8dbaa6294b93576b832&rev=622934

Will start a reland unless I misunderstood the graphs.
Project Member

Comment 8 by bugdroid1@chromium.org, Jan 17 (6 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fd9e2835636c89c2e177fbbf640f464b59e1f27b

commit fd9e2835636c89c2e177fbbf640f464b59e1f27b
Author: Peter Wen <wnwen@chromium.org>
Date: Thu Jan 17 04:17:11 2019

Reland "Android: Parallelize Error Prone"

Original CL: https://crrev.com/c/1346992

This is a simple reland as the revert was speculative and did not remove
perf bot issues.

Bug: 906803, 693079,  921422 
Change-Id: Iaddeaf90a40c261775885a1ef37d4320a2e39cd4
Reviewed-on: https://chromium-review.googlesource.com/c/1414875
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623572}
[modify] https://crrev.com/fd9e2835636c89c2e177fbbf640f464b59e1f27b/build/android/gyp/javac.py
[modify] https://crrev.com/fd9e2835636c89c2e177fbbf640f464b59e1f27b/build/config/android/internal_rules.gni

Project Member

Comment 9 by bugdroid1@chromium.org, Jan 17 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/21f79dc8a0c822a4e5bb676bd04e22b58974ab69

commit 21f79dc8a0c822a4e5bb676bd04e22b58974ab69
Author: Andrew Grieve <agrieve@chromium.org>
Date: Thu Jan 17 23:25:24 2019

Android: Use errorprone with checks disabled rather than javac

javac version changes based the host machine, and varying versions is
currently causing a sawtooth build size for MonochromePublic.apk

Bug: 693079,  921422 
Change-Id: I0b7a921bce86f0d88c56f29f47886d60578807f2
Reviewed-on: https://chromium-review.googlesource.com/c/1418898
Reviewed-by: Peter Wen <wnwen@chromium.org>
Commit-Queue: Peter Wen <wnwen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623903}
[modify] https://crrev.com/21f79dc8a0c822a4e5bb676bd04e22b58974ab69/build/android/gyp/javac.py
[modify] https://crrev.com/21f79dc8a0c822a4e5bb676bd04e22b58974ab69/build/config/android/internal_rules.gni

Project Member

Comment 10 by bugdroid1@chromium.org, Jan 17 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/89794a7a6cd8e6a84d6f3c1df7184815ec09fe36

commit 89794a7a6cd8e6a84d6f3c1df7184815ec09fe36
Author: Thomas Anderson <thomasanderson@chromium.org>
Date: Thu Jan 17 23:31:26 2019

Revert "Android: Use errorprone with checks disabled rather than javac"

This reverts commit 21f79dc8a0c822a4e5bb676bd04e22b58974ab69.

Reason for revert: breaks build on android-rel: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/android-rel/7111

Original change's description:
> Android: Use errorprone with checks disabled rather than javac
> 
> javac version changes based the host machine, and varying versions is
> currently causing a sawtooth build size for MonochromePublic.apk
> 
> Bug: 693079,  921422 
> Change-Id: I0b7a921bce86f0d88c56f29f47886d60578807f2
> Reviewed-on: https://chromium-review.googlesource.com/c/1418898
> Reviewed-by: Peter Wen <wnwen@chromium.org>
> Commit-Queue: Peter Wen <wnwen@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#623903}

TBR=wnwen@chromium.org,agrieve@chromium.org

Change-Id: I586133a80c3c2e13834541a210277891242e2a34
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 693079,  921422 
Reviewed-on: https://chromium-review.googlesource.com/c/1419301
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623905}
[modify] https://crrev.com/89794a7a6cd8e6a84d6f3c1df7184815ec09fe36/build/android/gyp/javac.py
[modify] https://crrev.com/89794a7a6cd8e6a84d6f3c1df7184815ec09fe36/build/config/android/internal_rules.gni

Project Member

Comment 11 by bugdroid1@chromium.org, Jan 18 (5 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/999d2d0bbcb798d24840308486f8c1adc223a4c8

commit 999d2d0bbcb798d24840308486f8c1adc223a4c8
Author: Andrew Grieve <agrieve@chromium.org>
Date: Fri Jan 18 02:56:07 2019

Reland "Android: Use errorprone with checks disabled rather than javac"

javac version changes based the host machine, and varying versions is
currently causing a sawtooth build size for MonochromePublic.apk

Reverted in: 89794a7a6cd8e6a84d6f3c1df7184815ec09fe36.

Reason for reland: Fixed missing dep.

TBR=wnwen@chromium.org

Change-Id: I9244fd4324b2f545d2b12ce1396e47ced2c812b1
Bug: 693079,  921422 
Reviewed-on: https://chromium-review.googlesource.com/c/1419202
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623974}
[modify] https://crrev.com/999d2d0bbcb798d24840308486f8c1adc223a4c8/build/android/gyp/javac.py
[modify] https://crrev.com/999d2d0bbcb798d24840308486f8c1adc223a4c8/build/config/android/internal_rules.gni

Comment 12 by agrieve@chromium.org, Jan 19 (4 days ago)

Status: Fixed (was: Untriaged)
Finally fixed!

Sign in to add a comment