Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

convert concurrent-mark-end to gc-op (or add it) in GMP concurrent increment #11239

Closed
amicic opened this issue Nov 20, 2020 · 4 comments · Fixed by #11578
Closed

convert concurrent-mark-end to gc-op (or add it) in GMP concurrent increment #11239

amicic opened this issue Nov 20, 2020 · 4 comments · Fixed by #11578

Comments

@amicic
Copy link
Contributor

amicic commented Nov 20, 2020

<cycle-start id="347" type="global mark phase" contextid="0" timestamp="2020-11-13T06:32:27.348" intervalms="55328.929" />
<gc-start id="348" type="global mark phase" contextid="347" timestamp="2020-11-13T06:32:27.348">
  <mem-info id="349" free="1147142144" total="3221225472" percent="35">
    <remembered-set count="1523648" freebytes="122683648" totalbytes="128778240" percent="95" regionsoverflowed="5" regionsstable="321" regionsrebuilding="0"/>
  </mem-info>
</gc-start>
<gc-op id="350" type="mark increment" timems="49.623" contextid="347" timestamp="2020-11-13T06:32:27.398"> <<<< exclusive componenet of the increment has gc-op
  <trace-info objectcount="3117114" scancount="3048551" scanbytes="83420400" />
</gc-op>
<gc-end id="351" type="global mark phase" contextid="347" durationms="49.866" usertimems="344.000" systemtimems="40.000" stalltimems="9.352" timestamp="2020-11-13T06:32:27.398" activeThreads="8">
  <mem-info id="352" free="1147142144" total="3221225472" percent="35">
    <remembered-set count="1768768" freebytes="121703168" totalbytes="128778240" percent="94" regionsoverflowed="1" regionsstable="0" regionsrebuilding="326"/>
  </mem-info>
</gc-end>
<concurrent-start id="353" type="GMP work packet processing" contextid="347" timestamp="2020-11-13T06:32:27.399">
  <concurrent-mark-start scanTarget="113512867" />
</concurrent-start>
<exclusive-end id="354" timestamp="2020-11-13T06:32:27.399" durationms="52.216" />

<concurrent-end id="355" type="GMP work packet processing" contextid="347" timestamp="2020-11-13T06:32:27.538">
  <concurrent-mark-end bytesScanned="113629324" reasonForTermination="Work target met" /> <<<<<<<<<<<<<<<<<<<<<<<<< concurrent component of the increment does not have it
</concurrent-end

This is how it's done in Concurrent Scavenger:

<concurrent-start id="13" type="scavenge" contextid="4" timestamp="2020-11-16T10:10:44.995">
</concurrent-start>
<concurrent-end id="14" type="scavenge" contextid="4" timestamp="2020-11-16T10:10:45.015">
<warning details="termination requested by GC" />   <<<<< this is optional and rare
<gc-op id="15" type="scavenge" timems="19.899" contextid="4" timestamp="2020-11-16T10:10:45.015">
  <memory-copied type="nursery" objects="88885" bytes="4296688" bytesdiscarded="56552" />
</gc-op>
</concurrent-end>

A dilemma is how to report reasonForTermination, which does not really fit into gc-op. It somewhats resembles to termination reason for CS, but in CS it's rare event (hence a warning used)

@amicic amicic added the comp:gc label Nov 20, 2020
@MelHopper
Copy link

MelHopper commented Nov 20, 2020

Please can you add an ID label, and state that the following topics will need to be updated once this modification has been decided:

  • vgclog.md
  • potentially gc.md

Many Thanks

@MelHopper
Copy link

Hi both, has this defect been put into an iteration plan yet? I am finalising content for the verbose GC log topic to be released mid-Jan. Many thanks.

@RSalman
Copy link
Contributor

RSalman commented Jan 5, 2021

Hi Mel, work is underway to complete this - I'm working with @gza060625 to have something in soon.

gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 5, 2021
eclipse-openj9/openj9#11239

What have been done:
- moved `terminationReason` as one attribute to concurrent-end stanza for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op

Signed-off-by: Enson Guo <enson.guo@ibm.com>
gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 6, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op

Signed-off-by: Enson Guo <enson.guo@ibm.com>
gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 6, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza
	for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op
- Add new API to get termination reason
	`MM_VerboseHandlerOutput::getReasonForTermination`
gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 6, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza
	for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op
- Add new API to get termination reason
	`MM_VerboseHandlerOutput::getReasonForTermination`

Signed-off-by: Enson Guo <enson.guo@ibm.com>
gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 14, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza
	for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op
- Add new API to get termination reason
	`MM_VerboseHandlerOutput::getReasonForTermination`
- Consolidate `handleConcurrentGCOpEnd` into `handleConcurrentEndInternal`

Signed-off-by: Enson Guo <enson.guo@ibm.com>
gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 14, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza
	for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op
- Add new API to get termination reason
	`MM_VerboseHandlerOutput::getReasonForTermination`
- Consolidate `handleConcurrentGCOpEnd` into `handleConcurrentEndInternal`

Signed-off-by: Enson Guo <enson.guo@ibm.com>
@RSalman
Copy link
Contributor

RSalman commented Jan 18, 2021

Just an update @MelHopper - the changes are ready, they should be merged in the next few days.

gza060625 pushed a commit to gza060625/omr that referenced this issue Jan 19, 2021
eclipse-openj9/openj9#11239

- Replace `concurrent-mark-end` in `concurrent-end` with `gc-op`
- moved `terminationReason` as one attribute to `concurrent-end` stanza
	for both concurrent marking and concurrent scavenging
- delete warning for reporting termination reason in scavenging (rare case)
- report concurrent marking duration `timems` in gc-op
- Add new API to get termination reason
	`MM_VerboseHandlerOutput::getReasonForTermination`
- Consolidate `handleConcurrentGCOpEnd` into `handleConcurrentEndInternal`

Signed-off-by: Enson Guo <enson.guo@ibm.com>
gza060625 pushed a commit to gza060625/openj9 that referenced this issue Jan 21, 2021
eclipse-openj9#11239

This is the OpenJ9 part to convert `concurrent-mark-end` to
`gc-op` in GMP concurrent increment.

- Implement new API to get termination reason
	`MM_VerboseHandlerOutputVLHGC::getReasonForTermination()`
- Adding timing of start/end of concurrent in `MM_IncrementalGenerationalGC`
- Replace `concurrent-mark-end` with `gc-op`
- Move `scanbytes` as attribute of `trace-info`

Signed-off-by: Enson Guo <enson.guo@ibm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants