Estou tentando escrever no início do meu script algum código que garanta que todos os comandos dentro do script sejam executados em apenas alguns núcleos específicos. mesmo que muitos comandos sejam executados em vários paralelos como: [command] & [command] & [command] & [command] & [command] , quero que eles sejam executados apenas nos poucos núcleos selecionados.
Atualmente, o script procura seu próprio PID quando é iniciado e, em seguida, o alimenta no conjunto de tarefas, onde eu digo que seu PID só pode usar os núcleos 1 a 3.
Um exemplo de comando de conjunto de tarefas se parece com:
taskset -c 1-3 -p 45678
Mas assim que alguns comandos paralelos são iniciados, cada um deles obtém seu próprio PID e fica mais restrito aos núcleos alocados.
Como faço para garantir que tudo no script permaneça nos núcleos desejados?
Se você definir a CPU para o processo de chamada, parece que todos os processos filhos terão as mesmas configurações.
Por exemplo, dado:
Uma
screen
sessão iniciada usandotaskset 4 screen
Na
screen
sessão, 3 instânciastop
deQuando dou uma olhada (em outro terminal) no status das
top
instâncias:Aqui está um exemplo de script bash que faz o trabalho:
E a saída resultante: