
Estou executando testes de velocidade entre diferentes versões do mesmo aplicativo. Quero poder alocar um conjunto fixo de CPUs para cada aplicativo. Por exemplo, quero executar o aplicativo em exatamente duas CPUs e não mais. Também quero que esses dois cpus sejam exclusivos deste processo para que nenhum outro processo possa "roubar" tempo de cpu e reduzir a pontuação do teste.
Existe uma maneira de fazer isso no Linux? Já ouvi falar de cgroups, containers e docker. Isso será de alguma ajuda? Além disso, qual abordagem é a mais simples (não necessariamente a mais amigável) e qual me dá mais controle?
Também estou um pouco preocupado com o hyper-threading. Se eu alocar uma única CPU lógica para este processo de teste e outro processo for hiperencadeado durante o teste, isso não piorará o resultado do teste? Eu também precisaria separar CPUs por CPUs físicas.