nohup coloca cada processo em um núcleo especificamente

nohup coloca cada processo em um núcleo especificamente

eu estava lendoesse linkagora mesmo e isso me fez pensar.

Há algum tempo, eu estava lançando simulações em até 30 núcleos de uma VM de 32 núcleos e fazendo isso com um script wrapper que chamava nohup perl ...<rest of command>...e redirecionava o STOUT/STDERR - não tenho certeza se os detalhes são relevantes, então vou poupar você os detalhes.

Estou conceitualmente feliz com tarefas multithread, mas ingenuamente presumi que colocar em segundo plano cada processo em minha chamada nohup (cada processo era uma simulação separada que foi executada por várias semanas) era suficiente para colocar cada processo filho em um núcleo/thread de por conta própria e, em seguida, prossiga até a conclusão, sem apelar para o GNU Parallels ou algo assim.

Eu os verificava periodicamente e sempre via que 30 vCPUs estavam trabalhando nas tarefas, tudo concluído em um tempo razoável, então nada parecia errado com minha lógica até agora...

Alguém (acho que em uma página do SO em algum lugar) me disse que isso pode acabar causando "debulha na CPU".

Portanto, minha pergunta tem algumas partes inter-relacionadas:

  • Em primeiro lugar, errei ao presumir que nohup e/ou background são suficientes para manter um processo em um núcleo específico? (E o processo que está sendo executado em um núcleo específico pode ser exibido no terminal? Top apenas informa quais núcleos estão ocupados, e não qual tarefa eles estão executando, que eu saiba?)
  • Em segundo lugar, a sobrecarga da CPU ocorrerá mesmo se houver 2 CPUs sobressalentes disponíveis para lidar com outras tarefas do sistema?
  • Por último, se eu não estivesse errado, um determinado processo é fixado em uma CPU específica,e apenas aquela CPU, ou eles irão pular entre os threads dependendo da ordem/tempo da chamada, etc. ou seja, se eu fizer um loop nos arquivos, o primeiro será fixado na CPU 0, depois 1, 2 e assim por diante até a conclusão?

Responder1

Em primeiro lugar, errei ao presumir que nohup e/ou background é um processo em execução em um núcleo específico exibido no terminal? Top apenas informa quais núcleos estão ocupados, e não que tarefa eles estão executando, pelo que sei?) suficiente para manter um processo em um núcleo específico? (E pode o

Nohup executa o comando exatamente como se eles fossem executados sem, a única diferença é que eles são removidos de uma lista de pids para enviar um sinal na saída. (rejeitar funciona para processos não iniciados com nohup).

Em segundo lugar, a sobrecarga da CPU ocorrerá mesmo se houver 2 CPUs sobressalentes disponíveis para lidar com outras tarefas do sistema?

Somente se a sobrecarga da CPU acontecer sem nohup ...

Por último, se eu não estava errado, um determinado processo é fixado em uma CPU específica, e somente naquela CPU, ou eles irão alternar entre os threads dependendo da ordem/tempo da chamada, etc., ou seja, se eu fizer um loop nos arquivos, o primeiro alguém é fixado na CPU 0, depois 1, 2 e assim por diante até a conclusão?

o mesmo que sem nohup ...

você pode visualizar em qual núcleo da CPU um processo está sendo executado com ps e pode limitar ou alterar os limites dos núcleos usando o conjunto de tarefas.

ps -eo pid,sgi_p,cmd --sort sgi_p

taskset -c -p 0 1234

Responder2

nohupnão configura nada para manter um processo em um núcleo específico. Você normalmente usariatasksetjunto com nohuppara fazer isso. toppode mostrar em qual núcleo um processo foi agendado pela última vez, é a Pcoluna.

O agendamento de processos e threads tem se tornado bastante complexo ao longo dos anos, porque há cada vez mais fatores a serem levados em consideração: afinidade de CPU, afinidade de cache, tratamento de interrupções, envelopes de energia... Mas eu não esperaria nenhuma surra se você estiver iniciar menos trabalhos do que os núcleos disponíveis, assumindo que o sistema não esteja muito ocupado com outras tarefas. De maneira semelhante, você não pode realmente prever em qual CPU uma tarefa será executada, mas se for apropriado, é muito provável que o agendador a mantenha no mesmo núcleo depois de escolher um núcleo.

informação relacionada