summaryrefslogtreecommitdiff
path: root/runtime/class_table.h
diff options
context:
space:
mode:
author Lokesh Gidra <lokeshgidra@google.com> 2024-05-03 05:42:29 +0000
committer Lokesh Gidra <lokeshgidra@google.com> 2024-05-10 17:39:05 +0000
commit2a8a527e90aa3b9a4c5418b60ada60c9c58ceb78 (patch)
treef060b5db8efac9989250badb0cbbbe250559f313 /runtime/class_table.h
parent14be0bbe4b8ed0af6dfbccc84de0af94fed4cd9d (diff)
Register only the used portion of moving space in compaction pause
The unused portion of the moving space is where new TLABs are allocated. In order to avoid userfaults during compaction in this portion, we were mapping a zero-page and then unregistering the unused portion after concurrent compaction has begun. Prior to that, during comapction pause, we were registering the entire space. Since gc-thread takes mmap_lock in write-mode for unregister, the concurrent COPY ioctls from mutators get serialized. We can solve this by simply faulting in a page in the space before registering in the compaction pause. This way we can directly register only the used portion. In order to minimize mmap_lock read and write acquisitions, the CL also reorders the sequence in which gc-thread processes linear-alloc, and unregisters moving-space and linear-alloc space. Bug: 320478828 Test: manual Change-Id: I299bba8f6ba48ae05dc2c61cdb7783c6f2d01a81
Diffstat (limited to 'runtime/class_table.h')
0 files changed, 0 insertions, 0 deletions