Configure o SGE para preencher cada nó completamente em vez de distribuir trabalhos

Configure o SGE para preencher cada nó completamente em vez de distribuir trabalhos

Postado originalmente no Stack Overflow por engano... Veja PS na parte inferior para obter a resposta dessa postagem.

Eu pesquiso isso há algum tempo, mas não consigo encontrar a resposta. O problema que tenho é este: suponha que tenho um SGE configurado com duas máquinas de 12 CPUs. Tenho dois trabalhos de 1 CPU para enviar à grade, mas outros usuários geralmente desejam enviar trabalhos de 12 CPU. Esses são trabalhos de memória compartilhada que não podem ser divididos em diversas máquinas. O que acontece é que às vezes eu envio meus dois trabalhos e cada um deles vai para uma máquina separada, deixando cada um com 11/12 CPUs livres. Isso evita que outras pessoas executem trabalhos de 12 CPUs enquanto estou trabalhando.

Existe uma maneira de contornar isso? Eu sei que você pode usar as regras de preenchimento para controlar um único qsub (para que o preenchimento possa fazer um qsub de 12 CPUs permanecer em uma máquina, dividido entre vários, etc.), mas existe uma configuração comparável para forçar qsubs separados a irem para a mesma máquina? Também sei que posso solicitar explicitamente uma máquina específica (acho que é -h machinename ou algo semelhante), mas prefiro ter uma configuração mais robusta do que esta.

Qualquer ajuda é apreciada. Obrigado!

PS: Na postagem do Stack Overflow, uma resposta chegou antes do thread ser fechado, sugerindo o uso do ambiente paralelo alocação_rule=$fill_up. A menos que eu tenha feito algo errado ao tentar, não acho que isso satisfaça o problema. Pelo que vi nos testes, se eu definir como fill_up isso significa que as CPUs solicitadas DENTRO de um único qsub serão colocadas na mesma máquina de grade, se possível, mas as CPUs de qsubs DIFERENTES ainda irão para a máquina de baixa carga (ou qualquer outra coisa a grade escolhe) e pode ir para uma máquina vazia. O teste para isso envolveu a substituição de alguns trabalhos de CPU únicos, a espera de cerca de 5 minutos e o envio de mais alguns. Embora às vezes o primeiro grupo acabasse na mesma máquina (suponho que porque a carga da máquina não é em tempo real, então todos foram enviados para a mesma máquina de baixa carga?), mas o segundo grupo não iria consistentemente para a mesma máquina do primeiro grupo.

Responder1

O padrão do agendadorload_forumlaa configuração énp_load_avgque atribui novos trabalhos aos nós com a menor média de carga. Para que ele preencha os nós, você pode definirfórmula_de_carregamentoparaslots. Para ver as configurações atuais do agendador:

qconf -ssconf

Para modificar as configurações:

qconf -msconf

informação relacionada