On Tue, 26 Nov 2024 01:37:33 GMT, David Holmes <dhol...@openjdk.org> wrote:
>> c.f: >> [https://bugs.openjdk.org/browse/JDK-8339420](https://bugs.openjdk.org/browse/JDK-8339420) >> >> Summary >> ------- >> >> Add `jcmd <pid> Thread.vthread_summary` to print summary information that is >> useful when trying to diagnose issues with virtual threads. >> >> >> Problem >> ------- >> >> The JDK is lacking tooling to diagnose issues with virtual threads. >> >> >> Solution >> -------- >> >> Add a new command that the `jcmd` command line tool can use to print >> information about virtual threads. The output includes the virtual thread >> scheduler, the schedulers used to support timeouts, and the I/O pollers used >> to support virtual threads doing socket I/O, and a summary of the thread >> groupings. >> >> Here is sample output. The output is intended for experts and is not >> intended for automated parsing. >> >> >> Virtual thread scheduler: >> java.util.concurrent.ForkJoinPool@4a624db0[Running, parallelism = 16, size = >> 2, active = 0, running = 0, steals = 2, tasks = 0, submissions = 0] >> >> Timeout schedulers: >> [0] java.util.concurrent.ScheduledThreadPoolExecutor@1f17ae12[Running, pool >> size = 0, active threads = 0, queued tasks = 0, completed tasks = 0] >> [1] java.util.concurrent.ScheduledThreadPoolExecutor@6193b845[Running, pool >> size = 1, active threads = 0, queued tasks = 1, completed tasks = 0] >> [2] java.util.concurrent.ScheduledThreadPoolExecutor@c4437c4[Running, pool >> size = 0, active threads = 0, queued tasks = 0, completed tasks = 0] >> [3] java.util.concurrent.ScheduledThreadPoolExecutor@3f91beef[Running, pool >> size = 0, active threads = 0, queued tasks = 0, completed tasks = 0] >> >> Read I/O pollers: >> [0] sun.nio.ch.KQueuePoller@524bf25 [registered = 1] >> >> Write I/O pollers: >> [0] sun.nio.ch.KQueuePoller@25c41da2 [registered = 0] >> >> Thread groupings: >> <root> [platform threads = 11, virtual threads = 0] >> java.util.concurrent.ScheduledThreadPoolExecutor@c4437c4 [platform threads = >> 0, virtual threads = 0] >> java.util.concurrent.ScheduledThreadPoolExecutor@3f91beef [platform threads >> = 0, virtual threads = 0] >> ForkJoinPool.commonPool/jdk.internal.vm.SharedThreadContainer@4fa374ea >> [platform threads = 0, virtual threads = 0] >> java.util.concurrent.ThreadPoolExecutor@506e1b77 [platform threads = 1, >> virtual threads = 0] >> java.util.concurrent.ScheduledThreadPoolExecutor@1f17ae12 [platform threads >> = 0, virtual threads = 0] >> java.util.concurrent.ThreadPerTaskExecutor@24155ffc [platform threads = 0, >> virtual threads = 2] >> ForkJoinPool-1/jdk.internal.vm.SharedThreadC... > > src/java.base/share/classes/jdk/internal/vm/VThreadSummary.java line 77: > >> 75: .append(System.lineSeparator()); >> 76: sb.append(JLA.virtualThreadDefaultScheduler()) >> 77: .append(System.lineSeparator()); > > Stylistically it is common/customary to align the dot operator in chained > method calls. It's just a style thing, it was done this way because the first string is the heading, the strings that follow go under the heading. > src/jdk.jcmd/share/man/jcmd.1 line 1: > >> 1: .\" Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights >> reserved. > > The `.1` nroff files are no longer in the repo, you need to edit the markdown > source instead. That was already pointed out, I think the PR was merged from an older version. > test/hotspot/jtreg/serviceability/dcmd/thread/VThreadSummaryTest.java line 74: > >> 72: >> .shouldContain(Objects.toIdentityString(defaultScheduler())) >> 73: .shouldContain("Timeout schedulers:") >> 74: .shouldContain("[0] " + >> ScheduledThreadPoolExecutor.class.getName()); > > Again please align dots on chained calls. and the IDE will of course re-align it at next edit :-) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/22121#discussion_r1857881180 PR Review Comment: https://git.openjdk.org/jdk/pull/22121#discussion_r1857881767 PR Review Comment: https://git.openjdk.org/jdk/pull/22121#discussion_r1857882356