Which threads are running on a given CPU

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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.