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

Issue 713573 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jun 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug-Regression



Sign in to add a comment

28kb regression in resource_sizes (MonochromePublic.apk) at 465484:465485

Project Member Reported by alexclarke@chromium.org, Apr 20 2017

Issue description

See the link to graphs below.
 
All graphs for this bug:
  https://chromeperf.appspot.com/group_report?bug_id=713573

Original alerts at time of bug-filing:
  https://chromeperf.appspot.com/group_report?keys=agxzfmNocm9tZXBlcmZyFAsSB0Fub21hbHkYgIDgouaYwwkM


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

Android Builder
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, Apr 20 2017


=== BISECT JOB RESULTS ===
Bisect was unable to run to completion

The bisect was able to narrow the range, you can try running with:
  good_revision: 0f47d06919be1dfd8a307f2dca899612dcb68f9a
  bad_revision : 8267f48654eb20e9d6453b53f2da310953d244f1

If failures persist contact the team (see below) and report the error.


Bisect Details
  Configuration: android_nexus7_perf_bisect
  Benchmark    : resource_sizes
  Metric       : MonochromePublic.apk_Specifics/normalized apk size
  Change       : 0.04% | 73529630.0 -> 73558334.0

Revision                           Result               N
chromium@465483                    73529630 +- 0.0      6        good
chromium@465483,v8@cd76322817      ---                  ---      build failure
chromium@465483,v8@207d5c39e9      ---                  ---      build failure
chromium@465484                    73558334 +- 0.0      6        bad
chromium@465485                    73558334 +- 0.0      6        bad

To Run This Test
  src/build/android/resource_sizes.py --chromium-output-directory {CHROMIUM_OUTPUT_DIR} --chartjson {CHROMIUM_OUTPUT_DIR}/apks/MonochromePublic.apk

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8981811165168014928

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5903734074245120


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!
Project Member

Comment 5 by 42576172...@developer.gserviceaccount.com, Apr 20 2017


=== BISECT JOB RESULTS ===
Bisect was unable to run to completion

The bisect was able to narrow the range, you can try running with:
  good_revision: 0f47d06919be1dfd8a307f2dca899612dcb68f9a
  bad_revision : 8267f48654eb20e9d6453b53f2da310953d244f1

If failures persist contact the team (see below) and report the error.


Bisect Details
  Configuration: android_nexus7_perf_bisect
  Benchmark    : resource_sizes
  Metric       : MonochromePublic.apk_Specifics/normalized apk size
  Change       : 0.04% | 73529630.0 -> 73558334.0

Revision                           Result               N
chromium@465483                    73529630 +- 0.0      6        good
chromium@465483,v8@cd76322817      ---                  ---      build failure
chromium@465483,v8@207d5c39e9      ---                  ---      build failure
chromium@465484                    73558334 +- 0.0      6        bad
chromium@465485                    73558334 +- 0.0      6        bad

To Run This Test
  src/build/android/resource_sizes.py --chromium-output-directory {CHROMIUM_OUTPUT_DIR} --chartjson {CHROMIUM_OUTPUT_DIR}/apks/MonochromePublic.apk

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8981800933675893344

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5903734074245120


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!
Labels: -Restrict-View-Google
Owner: kozyatinskiy@chromium.org
Status: Assigned (was: Untriaged)
Summary: 28kb regression in resource_sizes (MonochromePublic.apk) at 465484:465485 (was: 0% regression in resource_sizes (MonochromePublic.apk) at 465484:465485)
Note: the alert is off-by-one, and the actual offender is:
https://chromium.googlesource.com/v8/v8/+log/da4ccf0f..207d5c39

V8 Roll with just:
cd76322 Add flag to make __defineGetter__ & co. behave as strict functions by Adam Klein · 3 days ago
54271c2 [inspector] move console to builtins by kozyatinskiy · 3 days ago


20kb is from native library, 8kb is from v8 snapshot
Symbol diff shows the bloat is from 54271c2.
kozyatinskiy - Is this change worth 28kb? Is there anything you can do to reduce the size impact?





Section Sizes (Total=17,468 bytes):
    .bss: 96 bytes (not included in totals)
    .data: 32 bytes (0.2%)
    .data.rel.ro: 176 bytes (1.0%)
    .data.rel.ro.local: 384 bytes (2.2%)
    .rodata: 1,536 bytes (8.8%)
    .text: 15,340 bytes (87.8%)

155 symbols added (+), 46 changed (~), 82 removed (-), 316462 unchanged (not shown)
1 object files added, 0 removed

Showing 283 symbols with total size: 17544 bytes
.text=15.1kb     .rodata=1536 bytes other=592 bytes  total=17.1kb
Number of object files: 20

First columns are: running total, type, size
~     1664 r@Group      1664    {no path}
               ** merge strings (count=6)
-      740 t@0x136491c  -924    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::countCallback
+     1660 t@0x13689b4  920     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Count
~     2444 t@0xf3c1c0   784     v8/v8_base/bootstrapper.o
               v8::internal::Genesis::InitializeGlobal
-     1660 t@0x1363164  -784    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::createConsole
+     2444 t@0x1368fc8  784     v8/src/inspector/inspector/v8-console.o
               v8_inspector::timeEndFunction
-     1660 t@0x1364f78  -784    v8/src/inspector/inspector/v8-console.o
               v8_inspector::timeEndFunction
+     2376 t@0x13686e8  716     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Assert
-     1664 t@0x136463c  -712    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::assertCallback
+     2132 t@0x1368d4c  468     v8/src/inspector/inspector/v8-console.o
               v8_inspector::timeFunction
-     1664 t@0x1364cd0  -468    v8/src/inspector/inspector/v8-console.o
               v8_inspector::timeFunction
+     2088 t@0xf4e978   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleAssert
+     2512 t@0xf4f368   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleClear
+     2936 t@0xf4e628   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleCount
+     3360 t@0xf4e2d8   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleDebug
+     3784 t@0xf50250   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleDir
+     4208 t@0xf4fd58   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleDirXml
+     4632 t@0xf4e480   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleError
+     5056 t@0xf4f860   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleGroup
+     5480 t@0xf4fa08   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleGroupCollapsed
+     5904 t@0xf4f018   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleGroupEnd
+     6328 t@0xf503f8   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleInfo
+     6752 t@0xf500a8   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleLog
+     7176 t@0xf4eb20   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleMarkTimeline
+     7600 t@0xf4ee70   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleProfile
+     8024 t@0xf4ecc8   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleProfileEnd
+     8448 t@0xf50748   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTable
+     8872 t@0xf4f510   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTime
+     9296 t@0xf4f1c0   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTimeEnd
+     9720 t@0xf4e7d0   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTimeStamp
+    10144 t@0xf4fbb0   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTimeline
+    10568 t@0xf4f6b8   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTimelineEnd
+    10992 t@0xf505a0   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleTrace
+    11416 t@0xf4ff00   424     v8/v8_base/builtins-console.o
               v8::internal::Builtin_Impl_Stats_ConsoleWarn
~    11828 t@0xf77248   412     v8/v8_base/builtins.o
               v8::internal::Builtins::name
~    12104 t@0xf794f4   276     v8/v8_base/builtins.o
               v8::internal::Builtins::CppEntryOf
-    11852 t@0x1363cec  -252    v8/src/inspector/inspector/v8-console.o
-    11600 t@0x1363bd8  -252    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::profileEndCallback
-    11348 t@0x1363a10  -252    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::timeStampCallback
+    11596 t@0x1367da4  248     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Profile
+    11844 t@0x1367e9c  248     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::ProfileEnd
+    12092 t@0x1367cac  248     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::TimeStamp
+    12336 t@0x1368510  244     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::GroupEnd
-    12092 t@0x1364430  -244    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::groupEndCallback
-    11860 t@0x136453c  -232    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::clearCallback
+    12088 t@0x1368604  228     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Clear
-    11868 t@0x1364298  -220    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::groupCallback
~    11651 r@0x0        -217    {no path}
               ** aggregate padding of diff'ed symbols
+    11867 t@0x13683b0  216     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Group
-    11651 t@0x13641a8  -216    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::traceCallback
+    11863 t@0x13682dc  212     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Trace
+    12051 t@0xf51338   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleAssert
+    12239 t@0xf511c0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleClear
+    12427 t@0xf5127c   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleCount
+    12615 t@0xf508f0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleDebug
+    12803 t@0xf50c9c   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleDir
+    12991 t@0xf50d58   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleDirXml
+    13179 t@0xf509ac   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleError
+    13367 t@0xf50f8c   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleGroup
+    13555 t@0xf51048   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleGroupCollapsed
+    13743 t@0xf51104   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleGroupEnd
+    13931 t@0xf50a68   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleInfo
+    14119 t@0xf50b24   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleLog
+    14307 t@0xf513f4   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleMarkTimeline
+    14495 t@0xf514b0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleProfile
+    14683 t@0xf5156c   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleProfileEnd
+    14871 t@0xf50e14   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTable
+    15059 t@0xf517a0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTime
+    15247 t@0xf5185c   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTimeEnd
+    15435 t@0xf51918   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTimeStamp
+    15623 t@0xf51628   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTimeline
+    15811 t@0xf516e4   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTimelineEnd
+    15999 t@0xf50ed0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleTrace
+    16187 t@0xf50be0   188     v8/v8_base/builtins-console.o
               v8::internal::Builtin_ConsoleWarn
~    16371 d@0x2c12310  184     v8/v8_base/external-reference-table.o
               v8::internal::ExternalReferenceTable::AddBuiltins::builtins
~    16555 d@0x2cd3720  184     v8/v8_base/external-reference-table.o
               v8::internal::ExternalReferenceTable::AddBuiltins::c_builtins
+    16727 t@0x1377c14  172     v8/src/inspector/inspector/v8-inspector-impl.o
               v8_inspector::V8InspectorImpl::V8InspectorImpl
~    16895 t@0x1361638  168     v8/src/inspector/inspector/inspected-context.o
               v8_inspector::InspectedContext::InspectedContext
-    16735 t@0x1364ec0  -160    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::timelineCallback
-    16575 t@0x13652a4  -160    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::timelineEndCallback
+    16731 t@0x1366f7c  156     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::MarkTimeline
+    16887 t@0x1368f2c  156     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::Timeline
+    17043 t@0x13692e4  156     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::TimelineEnd
-    16887 t@0x1363b24  -156    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::markTimelineCallback
-    16747 t@0x136438c  -140    v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::groupCollapsedCallback
+    16883 t@0x1368488  136     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console::GroupCollapsed
~    16999 t@0xf69748   116     v8/v8_base/builtins-object.o
               v8::internal::ObjectLookupAccessor
+    17111 d@0x2c161d0  112     v8/src/inspector/inspector/v8-console.o
               v8_inspector::V8Console [vtable]
~    17207 t@0xf6a320   96      v8/v8_base/builtins-object.o
               v8::internal::Builtin_Impl_ObjectDefineGetter
~    17303 t@0xf6a8d0   96      v8/v8_base/builtins-object.o
               v8::internal::Builtin_Impl_ObjectDefineSetter
~    17207 t@0x1377cc0  -96     v8/src/inspector/inspector/v8-inspector-impl.o
               v8_inspector::V8Inspector::create
~    17295 d@0x2c0ee10  88      v8/v8_base/counters.o
               v8::internal::RuntimeCallStats::RuntimeCallStats::kNames
~    17383 r@0x29de4e8  88      v8/v8_base/counters.o
               v8::internal::RuntimeCallStats::counters

This change worth it - since otherwise we still will consume this memory for any JS context but later in runtime but I think I can make it a little better.
How can I get the same detailed information about per symbol memory consumption to check that my CL will make it better?
The instructions for getting the diff have been changing on a weekly basis, as the tool is still under development, but I hope to send out more broad / stable instructions shortly. So... welcome to the try-out-the-new-hotness club!

Instructions are here (but let me know if you have any trouble or have questions):
https://chromium.googlesource.com/chromium/src.git/+/master/tools/binary_size/

diagnose_apk_bloat.py is a tool to ensure you're building with the correct gn args. supersize is the tool that does the binary analysis.
Project Member

Comment 10 by 42576172...@developer.gserviceaccount.com, Apr 22 2017

Labels: Restrict-View-Google

=== BISECT JOB RESULTS ===
Perf regression found but unable to narrow commit range

Build failures prevented the bisect from narrowing the range further.


Bisect Details
  Configuration: android_nexus7_perf_bisect
  Benchmark    : resource_sizes
  Metric       : MonochromePublic.apk_Specifics/normalized apk size
  Change       : 0.04% | 73529630.0 -> 73558334.0

Suspected Commit Range
  4 commits in range
  https://chromium.googlesource.com/chromium/src/+log/0f47d06919be1dfd8a307f2dca899612dcb68f9a..8267f48654eb20e9d6453b53f2da310953d244f1


Revision                           Result               N
chromium@465483                    73529630 +- 0.0      6        good
chromium@465483,v8@54271c21e2      ---                  ---      build failure
chromium@465483,v8@cd76322817      ---                  ---      build failure
chromium@465483,v8@207d5c39e9      ---                  ---      build failure
chromium@465484                    73558334 +- 0.0      6        bad
chromium@465485                    73558334 +- 0.0      6        bad

To Run This Test
  src/build/android/resource_sizes.py --chromium-output-directory {CHROMIUM_OUTPUT_DIR} --chartjson {CHROMIUM_OUTPUT_DIR}/apks/MonochromePublic.apk

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8981708887458900480

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5903734074245120


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!
Labels: -Restrict-View-Google
Labels: -binary-size Performance-Size
Cc: estevenson@chromium.org agrieve@chromium.org
kozyatinskiy@ - curious if you've had a chance to take a look at this yet?
Ping. FYI - at this point the tools are working fairly well. Just try making some changes and running "tools/binary_size/diagnose_bloat.py HEAD" to build before & after & run a diff.

For faster iteration though, it's generally better to run "supersize archive" yourself. See https://chromium.googlesource.com/chromium/src.git/+/master/tools/binary_size/README.md

Comment 15 by wnwen@chromium.org, Jun 12 2017

Labels: -Pri-2 -Performance-Sheriff -M-60 M-61 OS-Android Pri-1
Friendly ping, please change status to Started if you are already working on this. Resolving these fixable regressions is very important for Chrome Go to succeed. If it's too hard or challenging to do the improvements mentioned in #8, then please update accordingly.

Simply make changes, commit, and run "tools/binary_size/diagnose_bloat.py HEAD" to see the results.

Thank you. Removing sheriff label as we have an owner.
W     31 This script runs more than 2x faster if you install pypy.
I     32 Using --tool-prefix=/usr/bin/
I     32 Using --output-directory=out/Release
I     52 Parsing ninja files.
I   1797 Parsing Linker Map
I   3397 Parsing .text
I   6614 Parsing .rodata
I   6795 Parsing .data.rel.ro
I   7053 Parsing .data
I   7064 Parsing .bss
I   7654 Looking up source paths from ninja files
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(ftfntfmt.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(ftfstype.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(ftinit.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(ftlcdfil.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(ftmm.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(fttype1.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(cff.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(pshinter.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(psnames.o)
W   7846 Could not find source path for obj/third_party/freetype/libfreetype.so.6(raster.o)
Traceback (most recent call last):
  File "tools/binary_size/libsupersize/main.py", line 102, in <module>
    main()
  File "tools/binary_size/libsupersize/main.py", line 98, in main
    args.func(args, parser)
  File "chromium/src/tools/binary_size/libsupersize/archive.py", line 696, in Run
    normalize_names=False)
  File "chromium/src/tools/binary_size/libsupersize/archive.py", line 502, in CreateSizeInfo
    'One or more source file paths could not be found. Likely caused by '
AssertionError: One or more source file paths could not be found. Likely caused by .ninja files being generated at a different time than the .map file.
Status: Started (was: Assigned)
I'm trying to work it around.
Re c#16: It looks like you're building for Linux? Linux isn't yet fully supported (see  issue 724599 ) - if possible you should build for Android. 
Is it possible to run tool against generated manually before and after .map files?
Yep!
tools/binary_size/supersize archive before.size --elf-file out/Release/chrome
ninja build after CL
tools/binary_size/supersize archive after.size --elf-file out/Release/chrome

tools/binary_size/console before.size after.size

But if you're using a Linux checkout you'll still hit the same problem. You'll need an Android checkout for the script to work properly: https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md
Also you can just pass the map file directly: tools/binary_size/supersize archive before.size --map-file out/Release/chrome.map.gz
Ok, thanks! I'll use android checkout tomorrow. I'm actually tried to use this script on standalone V8 repository to avoid full chromium compilation. But it looks like running "LLVM_DOWNLOAD_GOLD_PLUGIN=1 gclient runhooks  # One-time download." is not enough to force V8 use gold linker and generated map file doesn't contain expected sections.
Sounds good, thanks for looking into it!

Not familiar with the v8 build - but for Linux you also need these GN args:
allow_posix_link_time_opt = false
generate_linker_map = true

In the next couple of quarters we hope to support linker map files produced without the gold linker.
Status: Fixed (was: Started)
I was able to successfully run the tool. Works great. And actually I found that based on tool output most memory is consumed by Builtin_Impl_Stats_, this method is generated for each builtin method [1]. Probably we can optimize it and reduce memory consumption for each builtin method.

Actually I tried to just remove tracing macro and get -212 byte per each method and -53248 bytes for all methods.

[1] https://cs.chromium.org/chromium/src/v8/src/builtins/builtins-utils.h?rcl=c37ce45885b240650b0a5e29ee4a8e620d790f6b&l=83

For my part - I landed a CL which extracts common part of generated methods and reduce each method size as part of work on another issue: https://chromium-review.googlesource.com/c/522128/.

So I'm closing this issue as fixed since some CL is landed but maybe we'd like to investigate more into optimizing all builtins methods. From another point of view it's only 52 Kbs, we probably have something bigger to optimize.

Thank for your help with tool!

Sign in to add a comment