Re: RFR: 8323681: SA PointerFinder code should support G1 [v3]

2024-02-07 Thread Chris Plummer
On Tue, 6 Feb 2024 19:24:04 GMT, Chris Plummer  wrote:

>> This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
>> had SerialGC support. Previously for G1 addresses SA would only report that 
>> the address is "In unknown section of Java heap" with no other details. Now 
>> it provides details for G1 addresses. Here are some examples for clhsdb 
>> `threadcontext` output. `threadcontext` dumps the contents of the thread's 
>> registers, some of which are often in the java heap. In the output below the 
>> first line is without verbose output and the 2nd is with:
>> 
>> 
>> rbp: 0xa0004080: In G1 heap region
>> rbp: 0xa0004080: In G1 heap Region: 
>> 0xa000,0xa0018a30,0xa100:Old
>> 
>> 
>> I also added an improvement to how SA deals with addresses in the TLAB. It 
>> used to only report that the address is in a TLAB and provide details about 
>> the TLAB in verbose mode. Now if verbose mode is used, the heap region 
>> information is included after the TLAB information. Here again is an example 
>> without and with verbose output:
>> 
>> 
>> rsi: 0x00016600: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
>> rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f11c8029250 nid=1503 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
>> In G1 heap Region: 
>> 0x00016600,0x00016680,0x00016700:Eden
>> 
>> 
>> Note at the end it indicates the address is in the Eden space, which is 
>> probably always the case for G1 TLAB addresses. For SerialGC is shows 
>> something similar.
>> 
>> 
>> rsi: 0x88ff99e0: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
>> rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f0544029110 nid=3098 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
>> In heap new generation:  eden 
>> [0x8020,0x89ae56f0,0xa242) space capacity = 
>> 572653568, 27.99656213789626 used
>>   from [0xa686,0xa6860030,0xaaca) space 
>> capacity = 71565312, 6.707160027472528E-5 used
>>   to   [0xa242,0xa242,0xa686) space 
>> capacity = 71565312, 0.0 used
>> 
>> 
>> Testing all svc test in tier1, tier2, and tier5. Currently i...
>
> Chris Plummer has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Get rid of trailing colon for SerialGC terse output

Thanks for the reviews Thomas and Kevin!

-

PR Comment: https://git.openjdk.org/jdk/pull/17691#issuecomment-1933119334


Re: RFR: 8323681: SA PointerFinder code should support G1 [v2]

2024-02-06 Thread Chris Plummer
On Tue, 6 Feb 2024 17:39:42 GMT, Kevin Walls  wrote:

> Trivia on the output formatting: For serial, an object not in a tlab, without 
> verbose, I think it prints "In heap new generation:" and then nothing else. 
> The ":" leaves you hanging thinking it should introduce something else, so 
> there must have been a problem showing the something else. 8-)
> 
> Maybe we should just remove the 3 colons from the serial gen printing, then 
> we have that it looked like before? (or hold on until we are in "if 
> (verbose)" if we want to add them)

Ok, I've made that change. You now only get the colon during verbose output. 
Note that gen.priontOn() prints a leading space, so no need to put a space 
explicitly after the colon.

-

PR Comment: https://git.openjdk.org/jdk/pull/17691#issuecomment-1930604728


Re: RFR: 8323681: SA PointerFinder code should support G1 [v3]

2024-02-06 Thread Chris Plummer
> This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
> had SerialGC support. Previously for G1 addresses SA would only report that 
> the address is "In unknown section of Java heap" with no other details. Now 
> it provides details for G1 addresses. Here are some examples for clhsdb 
> `threadcontext` output. `threadcontext` dumps the contents of the thread's 
> registers, some of which are often in the java heap. In the output below the 
> first line is without verbose output and the 2nd is with:
> 
> 
> rbp: 0xa0004080: In G1 heap region
> rbp: 0xa0004080: In G1 heap Region: 
> 0xa000,0xa0018a30,0xa100:Old
> 
> 
> I also added an improvement to how SA deals with addresses in the TLAB. It 
> used to only report that the address is in a TLAB and provide details about 
> the TLAB in verbose mode. Now if verbose mode is used, the heap region 
> information is included after the TLAB information. Here again is an example 
> without and with verbose output:
> 
> 
> rsi: 0x00016600: In TLAB for thread "main" 
> sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
> rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
> tid=0x7f11c8029250 nid=1503 runnable [0x]
>java.lang.Thread.State: RUNNABLE
>JavaThread state: _thread_in_java
> )  
> [0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
> In G1 heap Region: 
> 0x00016600,0x00016680,0x00016700:Eden
> 
> 
> Note at the end it indicates the address is in the Eden space, which is 
> probably always the case for G1 TLAB addresses. For SerialGC is shows 
> something similar.
> 
> 
> rsi: 0x88ff99e0: In TLAB for thread "main" 
> sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
> rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
> tid=0x7f0544029110 nid=3098 runnable [0x]
>java.lang.Thread.State: RUNNABLE
>JavaThread state: _thread_in_java
> )  
> [0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
> In heap new generation:  eden 
> [0x8020,0x89ae56f0,0xa242) space capacity = 
> 572653568, 27.99656213789626 used
>   from [0xa686,0xa6860030,0xaaca) space 
> capacity = 71565312, 6.707160027472528E-5 used
>   to   [0xa242,0xa242,0xa686) space 
> capacity = 71565312, 0.0 used
> 
> 
> Testing all svc test in tier1, tier2, and tier5. Currently in progress.

Chris Plummer has updated the pull request incrementally with one additional 
commit since the last revision:

  Get rid of trailing colon for SerialGC terse output

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/17691/files
  - new: https://git.openjdk.org/jdk/pull/17691/files/37b3f17b..eca6031e

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=17691&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=17691&range=01-02

  Stats: 4 lines in 1 file changed: 1 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/17691.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17691/head:pull/17691

PR: https://git.openjdk.org/jdk/pull/17691


Re: RFR: 8323681: SA PointerFinder code should support G1 [v2]

2024-02-06 Thread Kevin Walls
On Sat, 3 Feb 2024 04:28:24 GMT, Chris Plummer  wrote:

>> This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
>> had SerialGC support. Previously for G1 addresses SA would only report that 
>> the address is "In unknown section of Java heap" with no other details. Now 
>> it provides details for G1 addresses. Here are some examples for clhsdb 
>> `threadcontext` output. `threadcontext` dumps the contents of the thread's 
>> registers, some of which are often in the java heap. In the output below the 
>> first line is without verbose output and the 2nd is with:
>> 
>> 
>> rbp: 0xa0004080: In G1 heap region
>> rbp: 0xa0004080: In G1 heap Region: 
>> 0xa000,0xa0018a30,0xa100:Old
>> 
>> 
>> I also added an improvement to how SA deals with addresses in the TLAB. It 
>> used to only report that the address is in a TLAB and provide details about 
>> the TLAB in verbose mode. Now if verbose mode is used, the heap region 
>> information is included after the TLAB information. Here again is an example 
>> without and with verbose output:
>> 
>> 
>> rsi: 0x00016600: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
>> rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f11c8029250 nid=1503 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
>> In G1 heap Region: 
>> 0x00016600,0x00016680,0x00016700:Eden
>> 
>> 
>> Note at the end it indicates the address is in the Eden space, which is 
>> probably always the case for G1 TLAB addresses. For SerialGC is shows 
>> something similar.
>> 
>> 
>> rsi: 0x88ff99e0: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
>> rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f0544029110 nid=3098 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
>> In heap new generation:  eden 
>> [0x8020,0x89ae56f0,0xa242) space capacity = 
>> 572653568, 27.99656213789626 used
>>   from [0xa686,0xa6860030,0xaaca) space 
>> capacity = 71565312, 6.707160027472528E-5 used
>>   to   [0xa242,0xa242,0xa686) space 
>> capacity = 71565312, 0.0 used
>> 
>> 
>> Testing all svc test in tier1, tier2, and tier5. Currently i...
>
> Chris Plummer has updated the pull request incrementally with three 
> additional commits since the last revision:
> 
>  - Minor cleanup of output
>  - Don't assert if the address is in the G1 heap, but not in an region. Not 
> all of the mapped part of the heap is in  use by regions.
>  - Fix isInRegion() to check the entire region, not just the in use part.

Looks good to me.

Trivia on the output formatting:
For serial, an object not in a tlab, without verbose, I think it prints "In 
heap new generation:" and then nothing else.
The ":" leaves you hanging thinking it should introduce something else, so 
there must have been a problem showing the something else. 8-)

Maybe we should just remove the 3 colons from the serial gen printing, then we 
have that it looked like before?
(or hold on until we are in "if (verbose)" if we want to add them)

-

Marked as reviewed by kevinw (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17691#pullrequestreview-1865959422


Re: RFR: 8323681: SA PointerFinder code should support G1 [v2]

2024-02-06 Thread Thomas Schatzl
On Sat, 3 Feb 2024 04:28:24 GMT, Chris Plummer  wrote:

>> This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
>> had SerialGC support. Previously for G1 addresses SA would only report that 
>> the address is "In unknown section of Java heap" with no other details. Now 
>> it provides details for G1 addresses. Here are some examples for clhsdb 
>> `threadcontext` output. `threadcontext` dumps the contents of the thread's 
>> registers, some of which are often in the java heap. In the output below the 
>> first line is without verbose output and the 2nd is with:
>> 
>> 
>> rbp: 0xa0004080: In G1 heap region
>> rbp: 0xa0004080: In G1 heap Region: 
>> 0xa000,0xa0018a30,0xa100:Old
>> 
>> 
>> I also added an improvement to how SA deals with addresses in the TLAB. It 
>> used to only report that the address is in a TLAB and provide details about 
>> the TLAB in verbose mode. Now if verbose mode is used, the heap region 
>> information is included after the TLAB information. Here again is an example 
>> without and with verbose output:
>> 
>> 
>> rsi: 0x00016600: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
>> rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f11c8029250 nid=1503 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
>> In G1 heap Region: 
>> 0x00016600,0x00016680,0x00016700:Eden
>> 
>> 
>> Note at the end it indicates the address is in the Eden space, which is 
>> probably always the case for G1 TLAB addresses. For SerialGC is shows 
>> something similar.
>> 
>> 
>> rsi: 0x88ff99e0: In TLAB for thread "main" 
>> sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
>> rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
>> tid=0x7f0544029110 nid=3098 runnable [0x]
>>java.lang.Thread.State: RUNNABLE
>>JavaThread state: _thread_in_java
>> )  
>> [0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
>> In heap new generation:  eden 
>> [0x8020,0x89ae56f0,0xa242) space capacity = 
>> 572653568, 27.99656213789626 used
>>   from [0xa686,0xa6860030,0xaaca) space 
>> capacity = 71565312, 6.707160027472528E-5 used
>>   to   [0xa242,0xa242,0xa686) space 
>> capacity = 71565312, 0.0 used
>> 
>> 
>> Testing all svc test in tier1, tier2, and tier5. Currently i...
>
> Chris Plummer has updated the pull request incrementally with three 
> additional commits since the last revision:
> 
>  - Minor cleanup of output
>  - Don't assert if the address is in the G1 heap, but not in an region. Not 
> all of the mapped part of the heap is in  use by regions.
>  - Fix isInRegion() to check the entire region, not just the in use part.

Seems good.

-

Marked as reviewed by tschatzl (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17691#pullrequestreview-1865770223


Re: RFR: 8323681: SA PointerFinder code should support G1 [v2]

2024-02-02 Thread Chris Plummer
> This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
> had SerialGC support. Previously for G1 addresses SA would only report that 
> the address is "In unknown section of Java heap" with no other details. Now 
> it provides details for G1 addresses. Here are some examples for clhsdb 
> `threadcontext` output. `threadcontext` dumps the contents of the thread's 
> registers, some of which are often in the java heap. In the output below the 
> first line is without verbose output and the 2nd is with:
> 
> 
> rbp: 0xa0004080: In G1 heap region
> rbp: 0xa0004080: In G1 heap Region: 
> 0xa000,0xa0018a30,0xa100:Old
> 
> 
> I also added an improvement to how SA deals with addresses in the TLAB. It 
> used to only report that the address is in a TLAB and provide details about 
> the TLAB in verbose mode. Now if verbose mode is used, the heap region 
> information is included after the TLAB information. Here again is an example 
> without and with verbose output:
> 
> 
> rsi: 0x00016600: In TLAB for thread "main" 
> sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
> rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
> tid=0x7f11c8029250 nid=1503 runnable [0x]
>java.lang.Thread.State: RUNNABLE
>JavaThread state: _thread_in_java
> )  
> [0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
> In G1 heap Region: 
> 0x00016600,0x00016680,0x00016700:Eden
> 
> 
> Note at the end it indicates the address is in the Eden space, which is 
> probably always the case for G1 TLAB addresses. For SerialGC is shows 
> something similar.
> 
> 
> rsi: 0x88ff99e0: In TLAB for thread "main" 
> sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
> rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
> tid=0x7f0544029110 nid=3098 runnable [0x]
>java.lang.Thread.State: RUNNABLE
>JavaThread state: _thread_in_java
> )  
> [0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
> In heap new generation:  eden 
> [0x8020,0x89ae56f0,0xa242) space capacity = 
> 572653568, 27.99656213789626 used
>   from [0xa686,0xa6860030,0xaaca) space 
> capacity = 71565312, 6.707160027472528E-5 used
>   to   [0xa242,0xa242,0xa686) space 
> capacity = 71565312, 0.0 used
> 
> 
> Testing all svc test in tier1, tier2, and tier5. Currently in progress.

Chris Plummer has updated the pull request incrementally with three additional 
commits since the last revision:

 - Minor cleanup of output
 - Don't assert if the address is in the G1 heap, but not in an region. Not all 
of the mapped part of the heap is in  use by regions.
 - Fix isInRegion() to check the entire region, not just the in use part.

-

Changes:
  - all: https://git.openjdk.org/jdk/pull/17691/files
  - new: https://git.openjdk.org/jdk/pull/17691/files/6da5b903..37b3f17b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=17691&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=17691&range=00-01

  Stats: 8 lines in 3 files changed: 2 ins; 0 del; 6 mod
  Patch: https://git.openjdk.org/jdk/pull/17691.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17691/head:pull/17691

PR: https://git.openjdk.org/jdk/pull/17691


RFR: 8323681: SA PointerFinder code should support G1

2024-02-02 Thread Chris Plummer
This PR adds G1 support to PointerFinder/PointerLocation. Previously we only 
had SerialGC support. Previously for G1 addresses SA would only report that the 
address is "In unknown section of Java heap" with no other details. Now it 
provides details for G1 addresses. Here are some examples for clhsdb 
`threadcontext` output. `threadcontext` dumps the contents of the thread's 
registers, some of which are often in the java heap. In the output below the 
first line is without verbose output and the 2nd is with:


rbp: 0xa0004080: In G1 heap region
rbp: 0xa0004080: In G1 heap Region: 
0xa000,0xa0018a30,0xa100:Old


I also added an improvement to how SA deals with addresses in the TLAB. It used 
to only report that the address is in a TLAB and provide details about the TLAB 
in verbose mode. Now if verbose mode is used, the heap region information is 
included after the TLAB information. Here again is an example without and with 
verbose output:


rsi: 0x00016600: In TLAB for thread "main" 
sun.jvm.hotspot.runtime.JavaThread@0x7f11c8029250
rsi: 0x00016600: In TLAB for thread ("main" #1 prio=5 
tid=0x7f11c8029250 nid=1503 runnable [0x]
   java.lang.Thread.State: RUNNABLE
   JavaThread state: _thread_in_java
)  
[0x00016600,0x0001662d0c90,0x0001667ffdc0,{0x00016680})
In G1 heap Region: 0x00016600,0x00016680,0x00016700:Eden


Note at the end it indicates the address is in the Eden space, which is 
probably always the case for G1 TLAB addresses. For SerialGC is shows something 
similar.


rsi: 0x88ff99e0: In TLAB for thread "main" 
sun.jvm.hotspot.runtime.JavaThread@0x7f0544029110
rsi: 0x88ff99e0: In TLAB for thread ("main" #1 prio=5 
tid=0x7f0544029110 nid=3098 runnable [0x]
   java.lang.Thread.State: RUNNABLE
   JavaThread state: _thread_in_java
)  
[0x88ff99e0,0x8978c090,0x89ae54b0,{0x89ae56f0})
In heap new generation:  eden 
[0x8020,0x89ae56f0,0xa242) space capacity = 
572653568, 27.99656213789626 used
  from [0xa686,0xa6860030,0xaaca) space 
capacity = 71565312, 6.707160027472528E-5 used
  to   [0xa242,0xa242,0xa686) space 
capacity = 71565312, 0.0 used


Testing all svc test in tier1, tier2, and tier5. Currently in progress.

-

Commit messages:
 - Add G1 support to PointerFinder and PointerLocation.

Changes: https://git.openjdk.org/jdk/pull/17691/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17691&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8323681
  Stats: 70 lines in 4 files changed: 54 ins; 6 del; 10 mod
  Patch: https://git.openjdk.org/jdk/pull/17691.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17691/head:pull/17691

PR: https://git.openjdk.org/jdk/pull/17691