• Michael Lippautz's avatar
    heap: Improved incremental scheduling for unified heap · bd02f663
    Michael Lippautz authored
    When the embedder integrates in V8's garbage collector the performance
    of the atomic phase is sensitive to how much embedder memory is found
    through marking the overall transitive closure.
    
    Before this patch, V8 would help out tracing the embedder's heap when
    making progress through tasks but not on allocations. In addition, V8
    would complete the garbage collection when it has observed it's own
    marking worklists as empty 3 times (*). This can create performance
    cliffs when there's a lot of work still to be done on the embedder
    side.
    
    This patch adds helping steps on allocation that are proportional to
    the bytes that V8 would otherwise process, guaranteeing some progress
    as long as there's V8 allocations. This allows us to remove (*).
    
    Potential Tradeoffs:
    - More time spent in V8's garbage collection metrics as we slightly
      limit the chances for the embedder to mark objects through tasks.
    - Prolonged V8.execute time (JS execution)
    + Faster progress
    + Less memory
    + Smaller atomic pause time
    
    Change-Id: I160f063209f7e129b9c884206f833706b69dadc1
    Bug: chromium:1044630
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2025371
    Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66091}
    bd02f663
Name
Last commit
Last update
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...