On Tue, 25 Feb 2025 05:57:28 GMT, Ashutosh Mehra <asme...@openjdk.org> wrote:

>> Thomas Stuefe has refreshed the contents of this pull request, and previous 
>> commits have been removed. The incremental views will show differences 
>> compared to the previous content of the PR. The pull request contains one 
>> new commit since the last revision:
>> 
>>   avoid Thread::current in high traffic chunk alloc path
>
> src/hotspot/share/compiler/compilationMemStatInternals.hpp line 92:
> 
>> 90: 
>> 91: // A very simple fixed-width FIFO buffer, used for the phase timeline
>> 92: template <typename T, int max>
> 
> Would `size` be a better name than `max`?

ok changed

> src/hotspot/share/compiler/compilationMemStatInternals.hpp line 160:
> 
>> 158:     void init(T v)        { start = cur = peak = v; }
>> 159:     void update(T v)      { cur = v; if (v > peak) peak = v; }
>> 160:     dT end_delta() const  { return (dT)cur - (dT)start; }
> 
> Should it be `return (dT)(cur - start); }`

hmm, I like to avoid the inner overflow is cur < start (if the phase released 
more memory than it allocated)

> src/hotspot/share/compiler/compilationMemStatInternals.hpp line 161:
> 
>> 159:     void update(T v)      { cur = v; if (v > peak) peak = v; }
>> 160:     dT end_delta() const  { return (dT)cur - (dT)start; }
>> 161:     size_t temporary_peak_size() const { return MIN2(peak - cur, peak - 
>> start); }
> 
> shouldn't it be `MAX2(peak - cur, peak - start)`? Why not just `peak - start`?

We are only interested in a rise that rose significantly above **both** the 
start and end point of the measurements. 

E.g.:
- if we have this: start = 0, end = 20MB, peak = 20MB, this is not a temporary 
peak and we already know that the end usage is 20MB.
- if we have this: start = 20MB, end = 0, peak = 20MB, this is not a temporary 
peak either, because we already know the starting footprint was 20MB.
- but if we have start = 0, end = 0, peak = 20MB, this is interesting since if 
we just print start and end we will miss the fact that in between those times 
we had temporarily allocated 20MB.

> src/hotspot/share/compiler/compilationMemoryStatistic.cpp line 149:
> 
>> 147:       int col = start_indent;
>> 148:       check_phase_trace_id(e.info.id);
>> 149:       if (omit_empty_phases && e._bytes.end_delta() == 0 && 
>> e._bytes.temporary_peak_size() == 0) {
> 
> `omit_empty_phases` is always false. Can it be just removed?

I hesitated to throw this out because the timeline can get very wordy; but I 
got used to the more expressive timeline with the 0 entries, so okay.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23530#discussion_r1970105585
PR Review Comment: https://git.openjdk.org/jdk/pull/23530#discussion_r1970105238
PR Review Comment: https://git.openjdk.org/jdk/pull/23530#discussion_r1970103141
PR Review Comment: https://git.openjdk.org/jdk/pull/23530#discussion_r1970110006

Reply via email to