Issue metadata
Sign in to add a comment
|
28kb regression in resource_sizes (MonochromePublic.apk) at 465484:465485 |
||||||||||||||||||||
Issue descriptionSee the link to graphs below.
,
Apr 20 2017
Started bisect job https://chromeperf.appspot.com/buildbucket_job_status/8981811165168014928
,
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!
,
Apr 20 2017
Started bisect job https://chromeperf.appspot.com/buildbucket_job_status/8981800933675893344
,
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!
,
Apr 21 2017
Started bisect job https://chromeperf.appspot.com/buildbucket_job_status/8981708887458900480
,
Apr 21 2017
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
,
Apr 21 2017
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?
,
Apr 21 2017
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.
,
Apr 22 2017
=== 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!
,
Apr 24 2017
,
May 9 2017
,
May 24 2017
kozyatinskiy@ - curious if you've had a chance to take a look at this yet?
,
Jun 9 2017
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
,
Jun 12 2017
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.
,
Jun 12 2017
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.
,
Jun 12 2017
I'm trying to work it around.
,
Jun 12 2017
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.
,
Jun 12 2017
Is it possible to run tool against generated manually before and after .map files?
,
Jun 12 2017
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
,
Jun 12 2017
Also you can just pass the map file directly: tools/binary_size/supersize archive before.size --map-file out/Release/chrome.map.gz
,
Jun 12 2017
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.
,
Jun 12 2017
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.
,
Jun 13 2017
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 |
|||||||||||||||||||||
Comment 1 by alexclarke@chromium.org
, Apr 20 2017