você não necessariamente desativa ou desativa núcleos.
você usaria cpusets e taskset
http://man7.org/linux/man-pages/man7/cpuset.7.html
Um cpuset define uma lista de CPUs e nós de memória ...
O sistema de arquivos cpuset é uma interface de pseudo-sistema de arquivos para o mecanismo cpuset do kernel, usado para controlar o posicionamento do processador e o posicionamento da memória dos processos. Geralmente é montado em / dev / cpuset.
Em sistemas com kernels compilados com suporte embutido para cpusets, todos os processos são anexados a um cpuset, e os cpusets estão sempre presentes. Se um sistema suportar cpusets, ele terá a entrada nodev cpuset nos arquivos / proc / filesystems. Ao montar o sistema de arquivos cpuset (consulte a seção EXEMPLO abaixo), o administrador pode configurar os cpusets em um sistema para controlar o processador e a localização da memória dos processos nesse sistema. Por padrão, se a configuração do cpuset em um sistema não for modificada ou se o sistema de arquivos cpuset nem estiver montado, o mecanismo do cpuset, apesar de presente, não terá efeito no comportamento do sistema.
As CPUs de um sistema incluem todas as unidades lógicas de processamento nas quais um processo pode ser executado, incluindo, se houver, vários núcleos de processador em um pacote e Hyper-Threads em um núcleo de processador. Os nós de memória incluem todos os bancos distintos da memória principal; sistemas pequenos e SMP geralmente têm apenas um nó de memória que contém toda a memória principal do sistema, enquanto os sistemas NUMA (acesso não uniforme à memória) têm vários nós de memória.
Em resumo, se você tiver 1 CPU com 6 núcleos, configuraria os cpusets e iniciaria seu processo em um cpuset configurado em apenas um núcleo, como o núcleo nº 3, por exemplo. Se fosse um processo paralelo, tudo estaria confinado a esse núcleo, de modo que, se você lançasse 4 processos em uma determinada cpuset com apenas um núcleo definido, cada um dos 4 processos obteria 25% de utilização da CPU no núcleo nº 3.
Com base nisso, o que normalmente acontece é que um cpuset é configurado de forma que
- em um sistema com mais de 200 núcleos, por exemplo, cpusetA tem núcleos 0..60 onde quer que eles estejam localizados, cpusetB é núcleos 61..70; cpusetC tem núcleos 71..80; e assim por diante, no entanto, um administrador / arquiteto escolhe configurar.
- cpusetA é alocado para determinados usuários e / ou programas de software específicos; cpusetB é alocado para diferentes usuários / programas; e assim por diante.
- um usuário lança um trabalho (processo) que solicitaria N núcleos ... dentro de um determinado cpuset e agora esses vários processos (paralelos) estão confinados ao cpuset especificado. E para os N paralelos confinados a um determinado cpuset, cada um desses processos deveria / deveria usar afinidade de processador ou cpu, de modo que esses processos paralelos não se debatem em núcleos diferentes no cpuset.
também: https://linux.die.net/man/1/taskset
maxcpus=1
comando ? Você colocou essa stringgrub.cfg
como uma opção de inicialização? (Atualize sua pergunta em vez de responder nos comentários).