1. A method, comprising: performing, by a computer that includes multiple processor sockets, each of which includes one or more processor cores: receiving an application that is configured for parallel execution on the computer; determining, dependent on profile data that characterizes the behavior of the computer when multiple applications are executed in parallel on a single one of the processor sockets, that the application is to be executed on a given one of the multiple processor sockets while a particular other application is also executing on the given one of the multiple processor sockets; beginning execution of the given application, wherein execution of the given application comprises executing program instructions that perform work on behalf of the given application and that cause a respective value of each of one or more performance counters in one or more processor cores of the given one of the multiple processor sockets on which respective software threads of the given application are executing to be updated; and determining, prior to completing execution of the given application or the particular other application, and dependent on the updated values of the one or more performance counters, that execution of the given application or execution of the particular other application is to continue on a different one of the multiple processor sockets.