

Performance of memory intensive applications executed on multi-core multi-socket environments is closely related to the utilization of shared resources in the memory hierarchy. Depending on the characteristics of the application, the shared resources utilization can lead to a significant performance degradation. The exploration of different thread affinity configurations allows the selection of a proper configuration that balances the performance improvement obtained by increasing parallelism with the performance degradation due to memory contention. However, as the number of cores per processor and the number of processors per node increases, testing all possible configurations is not reasonable. We propose a performance model to estimate the execution time for a thread configuration (number and affinity distribution) for an OpenMP application parallel region based on runtime hardware counters information and the estimation of performance degradation due to memory contention generated at last level cache (LLC). The latter is estimated considering features obtained from the memory access pattern and the memory footprint. The experimental results show that the proposed methodology identifies the thread configurations which maximize the application performance by preventing memory contention on main memory.