RFR: 8338890: Add monitoring/management interface for the virtual thread scheduler [v3]

David M. Lloyd duke at openjdk.org
Thu Sep 5 18:02:54 UTC 2024


On Thu, 5 Sep 2024 17:54:46 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> This PR proposes to add a JDK-specific monitoring and management interface for the virtual thread scheduler. The interface is named [VirtualThreadSchedulerMXBean](https://download.java.net/java/early_access/loom/docs/api/jdk.management/jdk/management/VirtualThreadSchedulerMXBean.html) and allows JMX based tooling monitor/manage the scheduler's target parallelism and monitor thread counts.
>> 
>> The JDK 5/6 era JDK-specific management interfaces are in jdk.management/com.sun.management. The proposal here is to start afresh in the jdk.management package, thus establishing a "new home" for JDK-specific management interfaces going forward.
>> 
>> jdk.test.lib.thread.VThreadRunner is test infrastructure used by several tests to set or ensure some level of parallelism. This is changed from using deep reflection to using the MXBean to access the target parallelism, which requires changes to the `@modules` tag tests in a number of tests (some tests no longer need to open java.base/java.lang).
>> 
>> (The changes proposed here have been in the loom repo for some time. A related command for the jcmd tool is also in that repo and will be proposed separately).
>
> Alan Bateman has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
> 
>  - Sync up from loom repo
>  - Merge
>  - Sync up from loom repo
>  - Merge
>  - Sync up from loom repo
>  - Initial commit

src/jdk.management/share/classes/com/sun/management/internal/VirtualThreadSchedulerImpls.java line 114:

> 112:                 case ForkJoinPool pool -> pool.getParallelism();
> 113:                 case ThreadPoolExecutor pool -> pool.getMaximumPoolSize();
> 114:                 default -> -1;

The API docs don't seem to specify what a value of `-1` means; is it meant to indicate "not known"? It seems like other implementations are returning e.g. `MAX_VALUE` sometimes too; is that worth calling out in the doc for `getParallelism()`?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20816#discussion_r1745955917


More information about the serviceability-dev mailing list