New issue
Advanced search Search tips

Issue 904034 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 13
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 903553



Sign in to add a comment

Iterator debugging makes debug Chrome build and run slower

Project Member Reported by brucedaw...@chromium.org, Nov 10

Issue description

enable_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.
 
Blocking: 903553
Labels: -Pri-3 Pri-2
Raising to P2 and blocking parent Issue 903553 on this.

Project Member

Comment 3 by bugdroid1@chromium.org, 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

Status: Fixed (was: Assigned)
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.
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