We run one app server which creates one Java process but of course it's all multi-threaded.

Could someone please tell me if there is any way in Linux to do this:

1. Is there a way to see which thread is bound to which CPU core?
2. Is there a way to see the CPU, Memory usage per thread? Something like prstat on Sun box which is real time and gives detailed information about threads per CPU

How to check if we are running SMP version of OS.

Another problem I see in the output from mpstat is that only one core (quad core) is doing all the work and all others are almost 99% idle most of the time. Where to see if work is evenly getting scheduled.