configuração (em todo o sistema) afinidades da CPU para executar processos em uma plataforma Linux

1

Estou realizando um tipo de pesquisa na qual programo vários aplicativos paralelos (por exemplo, aplicativos OpenMP / pthreaded) e executo os aplicativos em núcleos específicos (particionados) em plataformas multiprocessadas baseadas em Linux.

Podemos definir afinidades de CPU para cada aplicativo usando sched_setaffinity() chamada de sistema. Mas, como você sabe, o Linux gerencia (todos) os programas em execução também. Então, as execuções dos aplicativos que eu agende são às vezes interrompidas por outros processos que o Linux agendou.

Eu quero definir todos os processos e daemons (exceto para aplicativos que eu agendei) para a CPU 0. Meu primeiro pensamento foi configurar a CPU 0 manualmente, percorrendo todas as tarefas da tarefa de inicialização em um módulo do kernel. Mas o resultado será afetado pelo balanceamento de carga do Linux. Precisamos de outra maneira de desativar ou gerenciar o balanceamento de carga da CPU no Linux.

Existe alguma maneira possível ou configurações do sistema para fazer isso? Minha plataforma de destino é o servidor AMD Opteron (contendo 64 núcleos) e a versão do Linux é 3.19.

    
por Younghyun 23.02.2015 / 07:35

1 resposta

2

você deve ser capaz de desabilitar o balanceamento de carga automático dizendo ao kernel para usar somente as primeiras CPUs N . por exemplo. adicionando o seguinte aos seus parâmetros de inicialização, deve efetivamente executar todo o sistema na CPU # 0 (como o sistema irá usar apenas uma única CPU):

maxcpus=1

use taskset ou similar para executar seu processo em uma CPU diferente.

    
por 23.02.2015 / 11:07