Você pode restringir a execução de um processo em um núcleo específico (conjunto de) com taskset
.
taskset 3 mycommand
( 3
é uma máscara de bits, o que significa que mycommand
será executado apenas nos núcleos 0 e 1.)
No entanto, isso não alterará quantas CPUs o processo acha que você tem. É apenas uma instrução para o kernel não programar o processo em CPUs além daquelas listadas na máscara de bits. Portanto, se o programa fizer uma verificação de licença com base no número de CPUs, isso provavelmente não ajudará.
Uma solução que definitivamente funcionaria é executar o processo em uma máquina virtual com apenas 2 núcleos (virtuais). No entanto, isso pode custar desempenho.
O Cgroups oferece uma maneira intermediária de limitar os recursos que um processo pode usar. Eu não sei se ele pode efetivamente esconder CPUs do processo ou se ele age apenas como taskset
.