New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 750084 link

Starred by 1 user

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 3
Type: Feature

Blocked on:
issue 758570



Sign in to add a comment

Parallel marking for full MC collector

Project Member Reported by mlippautz@chromium.org, Jul 28 2017

Issue description

Tracking bug for implementing parallel marking in the full MC atomic pause.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ca33118d32ea0f2f5803485b14e56fae76d6b250

commit ca33118d32ea0f2f5803485b14e56fae76d6b250
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 28 13:30:52 2017

[heap] Fix smaller issues in MarkCompactMarkingVisitor

Bug: chromium:750084
Change-Id: I17560b2ab31ad494637a7498a089f4d2b7377907
Reviewed-on: https://chromium-review.googlesource.com/591450
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46971}
[modify] https://crrev.com/ca33118d32ea0f2f5803485b14e56fae76d6b250/src/heap/mark-compact.cc

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d9d059175e932b7b921e858426ac9f1133914962

commit d9d059175e932b7b921e858426ac9f1133914962
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Fri Jul 28 13:35:24 2017

[heap] Decouple RootMarkingVisitor used for seeding items from Minor MC

This visitor can be reused by the full MC when seeding root items.

Bug: chromium:750084
Change-Id: I9d46ce55737961d8f72a34b06f3314c8f75f3b4d
Reviewed-on: https://chromium-review.googlesource.com/591451
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46972}
[modify] https://crrev.com/d9d059175e932b7b921e858426ac9f1133914962/src/heap/mark-compact.cc
[modify] https://crrev.com/d9d059175e932b7b921e858426ac9f1133914962/src/heap/mark-compact.h

Project Member

Comment 3 by bugdroid1@chromium.org, Aug 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/652654291c0d4df8ea0fb6949a89f403afac0a79

commit 652654291c0d4df8ea0fb6949a89f403afac0a79
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Aug 02 18:10:22 2017

[heap] MC marking: Refactor roots visitation

Use separate visitors for roots visitation:
- A general RootVisitor for all regular roots
- An ObjectVisitor that is able to process contents of the string table
  and code hanging of the top optimized frame

Bug: chromium:750084
Change-Id: I21aaa18760dede8a9419de2890a47c6dcf7efa3b
Reviewed-on: https://chromium-review.googlesource.com/598239
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47089}
[modify] https://crrev.com/652654291c0d4df8ea0fb6949a89f403afac0a79/src/heap/mark-compact.cc
[modify] https://crrev.com/652654291c0d4df8ea0fb6949a89f403afac0a79/src/heap/mark-compact.h

Project Member

Comment 4 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7adbb4a24c72abba535c0e2156b3e66441d24a6a

commit 7adbb4a24c72abba535c0e2156b3e66441d24a6a
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Thu Aug 10 18:38:50 2017

[heap] MC: Go through marking deque when marking roots

Bug: chromium:750084
Change-Id: I3c0059f1e986b5e4400f84f44b7f179e7232eae1
Reviewed-on: https://chromium-review.googlesource.com/610781
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47292}
[modify] https://crrev.com/7adbb4a24c72abba535c0e2156b3e66441d24a6a/src/heap/mark-compact-inl.h
[modify] https://crrev.com/7adbb4a24c72abba535c0e2156b3e66441d24a6a/src/heap/mark-compact.cc
[modify] https://crrev.com/7adbb4a24c72abba535c0e2156b3e66441d24a6a/src/heap/mark-compact.h

Project Member

Comment 5 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ee86863ea39fc487162bdb2a81129d54167c2ce0

commit ee86863ea39fc487162bdb2a81129d54167c2ce0
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Aug 22 16:34:26 2017

[heap] Remove recursive marking in full MC

In a parallel marker world the recursion just avoids proper work
stealing.

It is removed in a separate CL to see the impact of recursive marking on
the benchmarks.

Bug: chromium:750084
Change-Id: Id37ae029e386b45c94e5fecbf349b31d2573d5c0
Reviewed-on: https://chromium-review.googlesource.com/625881
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47516}
[modify] https://crrev.com/ee86863ea39fc487162bdb2a81129d54167c2ce0/src/heap/mark-compact.cc

Blockedon: 758570
Labels: -OS-All OS-Android OS-Chrome OS-Linux OS-Mac OS-Windows
Project Member

Comment 9 by bugdroid1@chromium.org, Oct 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a

commit f46a92c2a8c716c6ad49ea61c4283bdffba3e52a
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Wed Oct 04 11:24:09 2017

[heap] MC: Parallel marking for the atomic pause

Reuse existing concurrent marking infrastructure for marking in the
atomic pause.

Details:
- Do not stop concurrent marking when entering the atomic pause.
- Start concurrent marking when it was off. This is required for
  non-incremental MC GCs.
- Use atomic marking state in MC.
- Transition through grey and avoid white->black.

CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux64_tsan_rel;master.tryserver.v8:v8_linux64_tsan_concurrent_marking_rel_ng;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Bug: chromium:750084
Change-Id: I9f84661e69beac6254494907bdfe94e865b1e3ab
Reviewed-on: https://chromium-review.googlesource.com/690002
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48281}
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap-symbols.h
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/gc-tracer.cc
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/incremental-marking.cc
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/incremental-marking.h
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/mark-compact-inl.h
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/mark-compact.cc
[modify] https://crrev.com/f46a92c2a8c716c6ad49ea61c4283bdffba3e52a/src/heap/mark-compact.h

Project Member

Comment 10 by bugdroid1@chromium.org, Oct 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4b42656dd6fca982c60185c004e2648093d70b51

commit 4b42656dd6fca982c60185c004e2648093d70b51
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Mon Oct 16 10:00:08 2017

[heap] Unify incremental and main marking visitor

With parallel marking enabled, both visitors have to be equal wrt. to
actual visitation.

The differences are captured by template parameters:
- Retaining path tracing which we only do for full GCs.
- Incremental marking of FixedArray.

CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux64_tsan_rel;master.tryserver.v8:v8_linux64_tsan_concurrent_marking_rel_ng;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Bug:  chromium:694255 , chromium:750084
Change-Id: I177aeb0ee4f6a35e2f592ba257c9ddc14f88fd99
Reviewed-on: https://chromium-review.googlesource.com/704935
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48582}
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/heap.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/incremental-marking.cc
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact-inl.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact.cc
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/mark-compact.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/objects-visiting-inl.h
[modify] https://crrev.com/4b42656dd6fca982c60185c004e2648093d70b51/src/heap/objects-visiting.h

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/af424eeab17f77617c52d5f6d631a3ebf574c017

commit af424eeab17f77617c52d5f6d631a3ebf574c017
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Oct 24 17:18:01 2017

[heap] MarkCompact marking: Avoid atomics on live byte count

Similar to the incremental marker, rename the MarkingState to
MajorMarkingState and avoid using atomics on live byte count as the
concurrent tasks cache its value.

CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux64_tsan_rel;master.tryserver.v8:v8_linux64_tsan_concurrent_marking_rel_ng;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Bug: chromium:750084
Change-Id: Id37bb89385d4fbae95542073ea652617e61010d5
Reviewed-on: https://chromium-review.googlesource.com/735399
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48885}
[modify] https://crrev.com/af424eeab17f77617c52d5f6d631a3ebf574c017/src/heap/incremental-marking.h
[modify] https://crrev.com/af424eeab17f77617c52d5f6d631a3ebf574c017/src/heap/mark-compact-inl.h
[modify] https://crrev.com/af424eeab17f77617c52d5f6d631a3ebf574c017/src/heap/mark-compact.cc
[modify] https://crrev.com/af424eeab17f77617c52d5f6d631a3ebf574c017/src/heap/mark-compact.h
[modify] https://crrev.com/af424eeab17f77617c52d5f6d631a3ebf574c017/src/heap/spaces.h

Project Member

Comment 12 by bugdroid1@chromium.org, Nov 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8ba5cfd87374a27894da8db65188980dcc3ff33c

commit 8ba5cfd87374a27894da8db65188980dcc3ff33c
Author: Ulan Degenbaev <ulan@chromium.org>
Date: Tue Nov 07 11:27:51 2017

[heap] Introduce a flag for enabling parallel marking in atomic pause.

The flag is --parallel-marking.

Bug: chromium:750084
Change-Id: I20ab5945d2cc41d44b29d7090a3436d028588540
Reviewed-on: https://chromium-review.googlesource.com/756709
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49178}
[modify] https://crrev.com/8ba5cfd87374a27894da8db65188980dcc3ff33c/src/flag-definitions.h
[modify] https://crrev.com/8ba5cfd87374a27894da8db65188980dcc3ff33c/src/heap/mark-compact.cc

Sign in to add a comment