Dois processos fazendo cálculos extensos - quero que um obtenha aproximadamente 100% do tempo do processador - como?

Dois processos fazendo cálculos extensos - quero que um obtenha aproximadamente 100% do tempo do processador - como?

Estou executando o servidor básico Ubuntu com dois processos: - processo 1 - realizando cálculo de 100% do tempo de atividade, e que uso para compartilhar o poder de computação com a comunidade (está rodando @prio 19) - processo 2 - realizando cálculos por 5 a 10 minutos, de de vez em quando, que eu uso para calcular para mim (está rodando @prio -19)

Quero que o processo 2 seja fornecido com 100% do poder de computação (o processo 1 naquele momento deve chegar perto de 0% da CPU).

Tentei usar nice/renice e o processo 1 é fornecido com prio 19 (o mais baixo possível) e o processo 2 recebe o prio -19 (o mais alto possível). Mas o melhor que consigo é 50% da CPU para o processo 1 e 50% da CPU para o processo 2 (verificado com htop) - o que me surpreendeu ...

Ambos os processos são multithread e - quando executados sozinhos - consomem 100% de todos os núcleos da CPU. Nenhum outro recurso (E/S, memória, largura de banda, ...) pode influenciar esse uso.

Não quero parar/iniciar manualmente nenhum processo quando precisar de poder de computação (ambos os processos devem estar em execução o tempo todo); 100% da CPU para o processo 2 deve ser fornecido automaticamente.

O que devo fazer para alcançar meu objetivo? Obrigado.

Responder1

Graças ao @ubfan1 explorei diferentes estratégias de agendamento e aqui está o melhor resultado que consegui até agora:

  • o processo 1 está sendo executado com a política SCHED_BATCH

  • o processo 2 está sendo executado com a política SCHED_RR

resultados: quando ambos os processos estão rodando simultaneamente: - o processo 1 é dado com ca. 5% da CPU - o processo 2 é fornecido com ca. 95% da CPU

e quando apenas o processo 1 está realizando cálculos (o processo 2 está aguardando minha entrada para iniciar os cálculos) - o processo 1 está usando 100% da CPU

Se alguém estiver mais interessado, leia isto:

  1. http://manpages.ubuntu.com/manpages/xenial/man8/schedtool.8.html
  2. http://man7.org/linux/man-pages/man7/sched.7.html

informação relacionada