• Dominik Inführ's avatar
    [heap] Improve accounting of PagedSpace::CommittedPhysicalMemory() · 25981026
    Dominik Inführ authored
    Instead of using the high water mark for determining this metric, we use
    a bitset for all active/used system pages on a V8 heap page. Each time
    when allocating a LAB on a page, we add the pages of that memory range
    to that bitset. During sweeping we rebuild that bitset from scratch and
    replace it with the old one in case free pages are discarded by the GC.
    We DCHECK here that the sweeper only ever removes pages. This has the
    nice benefit of ensuring that we don't miss any allocations (like we
    do now for concurrent allocations).
    
    CommittedPhysicalMemory for a page is then calculated by counting the
    set bits in the bitset and multiplying it with the system page size.
    This should be simpler to verify and track the "real" effective size
    more precisely.
    
    One case where we are partially less precise than the current
    implementation is for LABs. In order to reduce complexity we now treat
    all pages of a LAB allocation as active immediately. In the current
    implementation we tried to only account the actual used part of the LAB
    when changing the LAB later. This is more complex to track correctly
    but also doesn't account the currently used LAB in effective size.
    
    Change-Id: Ia83df9ad5fbb852f0717c4c396b5074604bd21e9
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497363Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#79428}
    25981026
Name
Last commit
Last update
.github Loading commit data...
bazel Loading commit data...
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...
.bazelrc 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...
.mailmap Loading commit data...
.style.yapf Loading commit data...
.vpython Loading commit data...
.vpython3 Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.bazel Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA 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...
LOONG_OWNERS 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...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
WORKSPACE Loading commit data...
codereview.settings Loading commit data...