Quero desabilitar 3 núcleos da CPU e executar meu processador em um único núcleo. Tenho comando usado: maxcpus=1
. Mas depois disso eu executei este comando ls /sys/devices/system/cpu
. Ainda mostra cpu0,cpu1,cpu2,cpu3
.
Eu também tentei: echo 0 > /sys/devices/system/cpu3/online
mas eu recebo o seguinte erro: no such file or directory
.
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).maxcpus=1
) varia de acordo com a distribuição. Além disso, o/sys
caminho que você possui é simplesmente o errado, o caminho correto é/sys/devices/system/cpu/cpu3/online
.Respostas:
Como Patrick indicou em um comentário , você
/sys
errou o caminho .Se você deseja desligar todas as CPUs, exceto
cpu0
:Digitar
maxcpus=1
em um prompt de shell não tem efeito. Mais precisamente, ele define a variávelmaxcpus
para o valor1
nesse shell, que não tem nenhum outro efeito. Você pode definir o número de CPUs no momento da inicialização, passandomaxcpus
como um parâmetro do kernel . Para isso, você precisa alterar a configuração do gerenciador de inicialização (por exemplo, para alterar a linha de comando do kernel no U-Boot).fonte
/sys/devices/system/cpu/online
e./offline
para controlar todos os núcleos.core
e desligar?você não necessariamente desativa ou desativa núcleos.
você usaria cpusets e taskset
http://man7.org/linux/man-pages/man7/cpuset.7.html
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
também: https://linux.die.net/man/1/taskset
fonte