Preciso executar testes de desempenho para o meu programa simultâneo e meu requisito é que ele seja executado em apenas um núcleo da CPU. (Não quero threads de cooperação - quero sempre ter uma alternância de contexto).
Então, eu tenho duas perguntas:
A melhor solução - Como assinar e reservar apenas um núcleo da CPU apenas para o meu programa (para forçar o SO a não usar esse núcleo da CPU). Eu acho que não é possível, mas talvez eu esteja errado ...
Como configurar o linux (Fedora 24) para usar apenas um núcleo de CPU?
linux
cpu
parallelism
peter55555
fonte
fonte
Respostas:
No linux, a chamada do sistema para definir a afinidade da CPU para um processo é
sched_setaffinity
. Depois, há ataskset
ferramenta para fazer isso na linha de comando.Para que esse programa seja executado em apenas uma CPU, acho que você gostaria de algo como
(defina qualquer número de CPU como argumento para o
-c
comutador.)Isso deve estar próximo o suficiente de um sistema de processador único, desde que seus outros processos não executem muito em comparação com o que você deseja medir ou que sejam programados para outras CPUs. Se você quiser dedicar uma CPU apenas a esse processo único e impedir que outros processos sejam executados nessa CPU, também será necessário definir sua afinidade.
Isso, eu não sei como fazer corretamente. Você precisaria definir a afinidade do processador
init
logo no início do processo de inicialização para garantir que ela seja herdada para todos os processos no sistema. Como solução alternativa, você pode usartaskset -c -p 0 $PID
todos os outros processos para forçá-los a executar apenas na CPU # 0.systemd também tem
CPUAffinity=
de controlar a afinidade nos arquivos da unidade e há um par de perguntas sobre como definir a afinidade padrão aqui na unix.SE, mas eu não encontrou qualquer com uma solução boa.Embora o @Kamil Maciorowski tenha comentado e respondido a outra pergunta no superuser.com , a configuração
isolcpus=1
na linha de comando do kernel deve "isolar essa CPU dos algoritmos gerais de agendamento", o que é algo que você pode querer.fonte