Maneiras de isolar cpus entre diferentes processos

Maneiras de isolar cpus entre diferentes processos

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.

informação relacionada