PTAL
This CL seems to have +0.2% on both js2 [0] and js3 [1]. In js2 splay regresses -0.6% because of the first iteration (which I would argue is still in fluctuation range). splay in js3 improves by +1.4% - but not sure whether is is an actual improvment (the js3 runner doesn't show first/average/worst).
0: https://pinpoint-dot-chromeperf.appspot.com/job/1071109f310000
1: https://pinpoint-dot-chromeperf.appspot.com/job/101ccaa3310000
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
📍 Job mac-m1_mini_2020-perf/speedometer3 complete.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/106ef044b10000
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Pretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Bug: 463528049Is this really improving GC pause time?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Pretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
Agreed. But AFAIU we shouldn't update counters/digest feedback here because `global_pretenuring_feedback_` is always empty (we don't invoke MergeAllocationSitePretenuringFeedback during full GCs).
Bug: 463528049Is this really improving GC pause time?
Evacuation and ClearNonLiveReferences() should become cheaper. So I would say yes in general. The main reason I used this bug though is because the CL is part of the parallel clearing CL.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Dominik InführPretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
Agreed. But AFAIU we shouldn't update counters/digest feedback here because `global_pretenuring_feedback_` is always empty (we don't invoke MergeAllocationSitePretenuringFeedback during full GCs).
Can we make this clear by moving the pretenuring logic fully behind young GCs?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Dominik InführPretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
Agreed. But AFAIU we shouldn't update counters/digest feedback here because `global_pretenuring_feedback_` is always empty (we don't invoke MergeAllocationSitePretenuringFeedback during full GCs).
I added a DCHECK for this.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Dominik InführPretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
Dominik InführAgreed. But AFAIU we shouldn't update counters/digest feedback here because `global_pretenuring_feedback_` is always empty (we don't invoke MergeAllocationSitePretenuringFeedback during full GCs).
I added a DCHECK for this.
Sorry, added that comment before I saw yours. I added a DCHECK which ensures that `global_pretenuring_feedback_` is empty on full GC. We could skip it altogether as well though. I just updated the CL.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
explicit EvacuateNewSpaceVisitor(Heap* heap,not need for explicit
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Dominik InführPretenuring is still happening on full GCs IIUC: https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/heap.cc;l=2422?q=ProcessPretenuringFeedback&ss=chromium
That part didn't change.
So, the CL here implements a version that doesn't update the counters but does digest feedback and follow through on it. I find this combination a bit strange.
Dominik InführAgreed. But AFAIU we shouldn't update counters/digest feedback here because `global_pretenuring_feedback_` is always empty (we don't invoke MergeAllocationSitePretenuringFeedback during full GCs).
Dominik InführI added a DCHECK for this.
Sorry, added that comment before I saw yours. I added a DCHECK which ensures that `global_pretenuring_feedback_` is empty on full GC. We could skip it altogether as well though. I just updated the CL.
Done
Bug: 463528049Dominik InführIs this really improving GC pause time?
Evacuation and ClearNonLiveReferences() should become cheaper. So I would say yes in general. The main reason I used this bug though is because the CL is part of the parallel clearing CL.
Done
explicit EvacuateNewSpaceVisitor(Heap* heap,Dominik Inführnot need for explicit
Done
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
14 is the latest approved patch-set.
The change was submitted with unreviewed changes in the following files:
```
The name of the file: src/heap/mark-compact.cc
Insertions: 2, Deletions: 3.
@@ -1742,9 +1742,8 @@
class EvacuateNewSpaceVisitor final : public EvacuateVisitorBase {
public:
- explicit EvacuateNewSpaceVisitor(Heap* heap,
- EvacuationAllocator* local_allocator,
- RecordMigratedSlotVisitor* record_visitor)
+ EvacuateNewSpaceVisitor(Heap* heap, EvacuationAllocator* local_allocator,
+ RecordMigratedSlotVisitor* record_visitor)
: EvacuateVisitorBase(heap, local_allocator, record_visitor),
promoted_size_(0),
is_incremental_marking_(heap->incremental_marking()->IsMarking()),
```
[heap] Remove pretenuring support in full GCs
In general the vast majority of GCs are Minor GCs, so not updating
AllocationSites during Major GCs shouldn't change pretenuring
heuristics much. Removing pretenuring support from Major GCs also
allows us to get rid of the Zombie state for AllocationSites. Without
the zombie state we also don't need to keep AllocationSites for
an additional GC cycle, so we do not need to mark AllocationSites
in ClearNonLiveReferences() anymore.
Removing the support for pretenuring in full GC doesn't break
resetting the pretenure decision at full GCs in
Heap::EvaluateOldSpaceLocalPretenuring. This is because this is
purely based on heap sizes before and after the full GC.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |