Iterator debugging makes debug Chrome build and run slower |
||
Issue descriptionenable_iterator_debugging defaults to true. This makes the generation of snapshot_blob.bin take about five times longer in debug builds (55.7 versus 11.7 s elapsed time in one recent comparison). It also makes some v8 operations run orders of magnitude slower - minutes instead of seconds (see crbug.com/903553). The benefits are unclear - I'm not sure when iterator debugging last found a bug. We could document that people should change this setting, but then most people will continue to have slow debug builds. This was encountered twice in one day. Once while evaluating build performance relating to crrev.com/c/1317069, and once while investigating horrific runtime performance in crbug.com/903553.
,
Nov 10
,
Nov 13
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0b4b9d11ca1efe6a910272c188ab6041649e3797 commit 0b4b9d11ca1efe6a910272c188ab6041649e3797 Author: Bruce Dawson <brucedawson@chromium.org> Date: Tue Nov 13 03:50:02 2018 Make iterator debugging off by default The cost of iterator debugging is too great so it should be off by default. It increases build times and sometimes increases run times by multiple orders of magnitude. I am not aware of it finding bugs recently. Bug: 904034 Change-Id: If3d1ea04a6213ed189cbfeb35bc0980283123acb Reviewed-on: https://chromium-review.googlesource.com/c/1330892 Commit-Queue: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Cr-Commit-Position: refs/heads/master@{#607480} [modify] https://crrev.com/0b4b9d11ca1efe6a910272c188ab6041649e3797/build/config/BUILD.gn
,
Nov 13
If anybody wants a justification for why we should turn this debugging feature off when VC++ has it on by default for debug builds, the answer is simple: 48 hardware threads. Iterator debugging (apparently) scales very poorly due to lock contention. The size of the slowdown is presumably proportional to the number of hardware threads, with a presumed extra performance cost for multi-core. So, it is extra expensive and doesn't seem to find bugs. So, off by default.
,
Nov 14
Discussion with the VC++ team on twitter suggested that they agreed that iterator debugging cannot currently scale to handle this scenario. They have a single shared lock and, especially on dual-socket machines, it is impossible for this to scale to the level of parallelism that we prefer. https://twitter.com/MalwareMinigun/status/1062476190848438273 |
||
►
Sign in to add a comment |
||
Comment 1 by kbr@chromium.org
, Nov 10