Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Conversation

@Maoni0
Copy link
Member

@Maoni0 Maoni0 commented Jun 24, 2019

This includes a set of many-core fixes, the instrumentation for analyzing heap balancing activities and a GCLogParser tool to parse the logs.

  • GetCurrentProcessorNumber returns the correct process number in the CPU group case so we don't always start looking in the first group
  • We don't start the initial smoothed gen0 budget as 0 - this causes volatility in the start up stage
  • Distribute procs to the right heap/node when there are fewer heaps than procs
  • Fixed timing issue when init_numa_node_to_heap_map is called but the proc_no's/numa_node's for heaps aren't fully setup as they are setup from GC threads themselves
  • Moved fgn_maxge_percent to per heap as this actuall shows up in remote node access (future work will include making almost all GC's own datastructures like gc_heap numa aware)
  • When doing heap balancing we don't look at other heaps less the budget left is small enough. The cost of having to look through all other heaps really shows on HT or with many threads sharing heaps.
  • Heap balancing delta is set to be proportional to what's left in the budget instead of a fix ratio of min size.
  • Got rid of some unnecessary indirections in heap balancing code.
  • Checked in some API changes to facilitate future perf fixes in this area. I had other perf fixes but for 3.0 I'm only checking in these as the other ones require more perf testing. But I want to avoid interface changes.

@Maoni0 Maoni0 changed the title WIP many core many core perf fixes Jul 3, 2019
@Maoni0 Maoni0 added the area-GC label Jul 3, 2019
@Maoni0
Copy link
Member Author

Maoni0 commented Jul 3, 2019

CC @sergiy-k @Andy-MS

@Maoni0 Maoni0 merged commit c7d12d2 into dotnet:master Jul 5, 2019
ghost pushed a commit that referenced this pull request Jul 12, 2019
* Fixes when accessing fgn_maxgen_percent

PR #25350 changed `fgn_maxgen_percent` to be a per-heap property when
`MULTIPLE_HEAPS` is set. A few uses need to be updated.

* In `full_gc_wait`, must re-read `fgn_maxgen_percent` before the
  second test of `maxgen_percent == 0`.
  (Otherwise the second test is statically unreachable.)
* In RegisterForFullGCNotification, must set `fgn_maxgen_percent` when
  `MULTIPLE_HEAPS` is not set
* In CancelFullGCNotification, must set `fgn_maxgen_percent` for each
  heap separately when `MULTIPLE_HEAPS` is set.

Fix dotnet/corefx#39374

* Avoid duplicate code when getting fgn_maxgen_percent twice in full_gc_wait
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
* Fixes when accessing fgn_maxgen_percent

PR dotnet/coreclr#25350 changed `fgn_maxgen_percent` to be a per-heap property when
`MULTIPLE_HEAPS` is set. A few uses need to be updated.

* In `full_gc_wait`, must re-read `fgn_maxgen_percent` before the
  second test of `maxgen_percent == 0`.
  (Otherwise the second test is statically unreachable.)
* In RegisterForFullGCNotification, must set `fgn_maxgen_percent` when
  `MULTIPLE_HEAPS` is not set
* In CancelFullGCNotification, must set `fgn_maxgen_percent` for each
  heap separately when `MULTIPLE_HEAPS` is set.

Fix dotnet/corefxdotnet/coreclr#39374

* Avoid duplicate code when getting fgn_maxgen_percent twice in full_gc_wait


Commit migrated from dotnet/coreclr@4b5ae70
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants