  Simultaneous multithreading processors improve throughput over
single-threaded processors thanks to sharing internal core resources among
instructions from distinct threads. However, resource sharing introduces
inter-thread interference within the core, which has a negative impact on
individual application performance and can significantly increase the
turnaround time of multi-program workloads. The severity of the interference
effects depends on the competing co-runners sharing the core. Thus, it can be
mitigated by applying a thread-to-core allocation policy that smartly selects
applications to be run in the same core to minimize their interference.
  This paper presents SYNPA, a simple approach that dynamically allocates
threads to cores in an SMT processor based on their run-time dynamic behavior.
The approach uses a regression model to select synergistic pairs to mitigate
intra-core interference. The main novelty of SYNPA is that it uses just three
variables collected from the performance counters available in current ARM
processors at the dispatch stage. Experimental results show that SYNPA
outperforms the default Linux scheduler by around 36%, on average, in terms of
turnaround time in 8-application workloads combining frontend bound and backend
bound benchmarks.
