1. A method for thread management in parallel processes, comprising: receiving monitored hardware metrics information from the multiple cores or multiple nodes on which processes are executed; receiving monitored process and thread information; globally monitoring the processing across the multiple cores or multiple nodes; analyzing the monitored information to minimize imbalances between the multiple cores or to improve core or node exploitation; and dynamically adjusting the number of threads per process based on the analysis.