В системе Solaris вы можете использовать команду
prstat -L -p <pid> 0 1 > filename.txt
Это даст вам разбивку каждого процесса, выполняющего работу на ЦП, и будет основано на ID процессора облегченного веса, а не на PID. Когда вы смотрите на дамп потока, вы можете сопоставить легкий процесс с вашим NID (или TID в зависимости от реализаций), которые показаны в верхней строке дампа потока. Сопоставив эти две вещи, вы сможете определить, какие из ваших потоков являются нагрузкой на процессор.
Вот пример вывода.
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/LWPID
687 user 1024M 891M sleep 59 0 0:40:07 12.0% java/5
687 user 1024M 891M sleep 59 0 0:34:43 15.3% java/4
687 user 1024M 891M sleep 59 0 0:17:00 7.6% java/3
687 user 1024M 891M sleep 59 0 1:00:07 31.4% java/2
Затем с соответствующим дампом потока вы можете найти эти темы
"GC task thread#0 (ParallelGC)" prio=3 tid=0x00065295 nid=0x2 runnable
"GC task thread#1 (ParallelGC)" prio=3 tid=0x00012345 nid=0x3 runnable
"GC task thread#2 (ParallelGC)" prio=3 tid=0x0009a765 nid=0x4 runnable
"GC task thread#3 (ParallelGC)" prio=3 tid=0x0003456b nid=0x5 runnable
Так что в случае этого случая с высокой загрузкой ЦП проблема была в сборке мусора. Это видно по совпадению nid с полем LWPID
Если это вам поможет, я бы предложил сделать скрипт, который будет выводить ваш prstat и загрузку процессора одновременно. Это обеспечит вам наиболее точное представление вашей заявки.
В соответствии с вашими первыми двумя нитями, @joseK был верным. Эти темы сидят и ждут, чтобы принять запрос от пользователя. Там нет никаких проблем.