We had a need to see which threads were running on a given CPU, as utilization was not balanced amongst the cores.
We used what is below to do so. In our case, our java PID was 488.
-bash-4.1$ jstack 488 > l.txt; for p in $(ps -eL -o pid,psr,lwp | grep 488 | awk '$2 == 0 {print $NF}'); do
> PID=$(printf "%x\n" $p)
> grep "nid=0x${PID}" l.txt
> done | awk '{gsub("[0-9]","",$1); print $1}' | sort | uniq -c | sort -n
1 "ajp-...--Acceptor-"
1 "/atg/deployment/file/FileDeploymentServer-ConnectionAcceptor"
1 "/atg/dynamo/server/SQLRepositoryEventServer_production-ConnectionAcceptor"
1 "/atg/dynamo/server/SQLRepositoryEventServer_production-SendAsynchronousGSAEventThread"
1 "/atg/dynamo/server/SQLRepositoryEventServer-SendAsynchronousGSAEventThread"
1 "/atg/dynamo/service/ClientLockManager-MessageReadingThread"
1 "/atg/dynamo/service/ClientLockManager_production-MessageReadingThread"
1 "/atg/dynamo/service/GSACacheClientManager-MessageReadingThread"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-/atg/epub/file/ConfigEmptyDirDeleter-folderCleanup"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-JMS-POLL"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-MSG-LIMBO-POLL"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-null"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-OrderSharderRotationServcie"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-PlaceScheduledOrders"
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-Reset
1 "/atg/dynamo/service/Scheduler-reusablejobhandler-SitemapWriterService"
1 "/atg/reporting/datacollection/commerce/ClaimableLogEntryQueueSink-"
1 "/atg/reporting/datacollection/commerce/OrderLogEntryQueueSink-"
1 "/atg/reporting/datacollection/search/EnvironmentLogEntryQueueSink-"
1 "/atg/reporting/datacollection/search/QueryLogEntryQueueSink-"
1 "Attach
1 ".data"
1 "Gang
1 "IdleRemover"
1 "JBossLifeThread"
1 "JCA
1 "JmDNS.SocketListener"
1 "MultiThreadedHttpConnectionManager
1 "net.sf.ehcache.CacheManager@ba"
1 "New
1 "QueueItemChangedThread"
1 "Thread-"
2 "http-...--Acceptor-"
2 "RMI
3 "/atg/dynamo/service/Scheduler-reusablejobhandler-reinitialize
19 "/atg/dynamo/server/SQLRepositoryEventServer_production-"
41 "pool--thread-"
81 "http-...--"
93 "/atg/dynamo/server/SQLRepositoryEventServer-"
-bash-4.1$
2 comments for “Which threads are running on a given CPU”