RFR: 8366082: Improve queue size computation in CPU-time sampler
Johannes Bechberger
jbechberger at openjdk.org
Mon Aug 25 14:25:57 UTC 2025
On Mon, 25 Aug 2025 13:42:50 GMT, Francesco Andreuzzi <duke at openjdk.org> wrote:
>> Improve the sample queue size computation for the CPU-time sampler by increasing the size dynamically when needed, but keeping the default size small.
>
> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 186:
>
>> 184: if (factor > 1) {
>> 185: u4 new_capacity = _capacity * factor > CPU_TIME_QUEUE_MAX_CAPACITY ? CPU_TIME_QUEUE_MAX_CAPACITY : capacity * factor;
>> 186: set_capacity(new_capacity);
>
> Is it a problem if another thread changes `_capacity` since when you read it at L171, and the update is overwritten?
No other thread can change it. The queue capacity is only changed when
- a thread is created (so queue drainage is possible in parallel
- when the queue is drained and there is sample loss (but this happens only with a dequeue lock)
- a thread is terminated: I added synchronisation to prevent concurrency
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26926#discussion_r2298253432
More information about the hotspot-jfr-dev
mailing list