The only toolsI am aware ofare indirect ones:
You can pin the threads yourself using the Linux OS functions sched_setaffinity() and sched_getaffinity() and compare the performance of the scheduler without pinning. The Intel compilers also support extremely flexible thread pinning using OpenMP and the environment variable KMP_AFFINITY.
See this post http://software.intel.com/en-us/forums/showpost.php?p=117038 for a descriptionof how to determine the CPU a particular thread is currently running on.
Processor/memory machine topology information about the machine should be available in /proc/cpuinfo.(which core is on which socket, hyperthread context is on which core, etc) Or, a better compact description of this topology can be obtained using Intel compilers with the -openmp compilation switch and setting the environment variableKMP_AFFINITY="verbose,none" whether or not you use OpenMP threading.
You can alsocontrol the scheduling policy using the Linux OS functions sched_getscheduler() and sched_setscheduler().