Na frente do sistema operacional:
-
Eu diria que o método clássico é definir a afinidade de CPU com
taskset
. -
Uma alternativa melhor é usar
cgroups
. -
E a solução de palavras da moda é executar seus aplicativos em contêineres Docker . No entanto, antes do Java 8, a JVM não consegue entender as limitações impostas pelo Docker (disponível somente após o 8u131 + backported, não tendo certeza se está disponível como experimental em Java9 para a parte da CPU, mas é para memória e totalmente disponível em Java10)