atd, lote // Configurando o fator limitador de carga

5

Estou lançando tarefas não interativas usando batch e gostaria de aumentar o fator de limitação de carga para usar todos os 8 dos meus núcleos. Estou no Ubuntu 16.04 LTS.

Pelo que entendi, batch usa atd para realizar os trabalhos. As tarefas começam quando o fator de carga fica abaixo de um limite, chamado fator limitador de carga . Diz-se no man de atd que podemos alterar esse fator usando a opção -l .

Minha pergunta: como posso usar essa opção atd -l XX ? Quando eu digito, por exemplo, atd -l 7.2 antes de batch , não parece estar mudando nada.

O que eu encontrei até agora:

  • Nesta pergunta Como executar o script bash via multithreading , um colaborador propõe fazer isso no script ' atd service starting'. Eu acho que se refere ao /etc/init.d/atd , mas eu não sei o que mudar lá, cf próximo ponto.
  • Eu encontrei páginas, como esta link , onde se propõem a: "modificar a seguinte linha (na seção inicial) do script /etc/init.d/atd : daemon /usr/sbin/atd . Substitua-a por essa linha, usando o argumento -l para especificar a nova carga mínima do sistema valor: daemon /usr/sbin/atd -l 1.6 ". No entanto, não existe essa linha em /etc/init.d/atd .

Parece que pode ser introduzido no /etc/init.d/atd , mas não sei onde. Eu nunca mudei esses arquivos.

Então, como posso alterar o fator de limitação de carga usado pelo comando batch ?

    
por ciliou 13.08.2016 / 15:58

3 respostas

1

Encontrou uma solução:

  • Crie um arquivo: /etc/init/atd.override
  • Adicione uma linha exec atd -l 7.2
  • Então sudo service atd restart

Tem a ver com o funcionamento do 'daemon de iniciação do Upstart'. Explicações: link Se o arquivo /etc/init/atd.override já existir com uma linha começando com exec , edite esta linha.

    
por 31.08.2016 / 14:46
1

Edite o /lib/systemd/system/atd.service no Ubuntu 16.04 / systemd.

Depois de adicionar -l «load avg» ao ExecStart :

$ cat /lib/systemd/system/atd.service 
[Unit]
Description=Deferred execution scheduler
Documentation=man:atd(8)

[Service]
ExecStart=/usr/sbin/atd -f -l 7.2
IgnoreSIGPIPE=false

[Install]
WantedBy=multi-user.targe

você verá uma mensagem ao executar systemctl status atd ou ( service atd status ):

Warning: atd.service changed on disk. Run 'systemctl daemon-reload' to reload units.

A execução desse comando elimina o aviso, mas para realmente selecionar a alteração, o serviço precisa ser reiniciado ( service atd restart) .

    
por 07.05.2017 / 19:27
0

Eu não tenho o Ubuntu 16.04 LTS por perto, mas no sistema baseado no Debian /etc/init.d/atd geralmente diz algo como:

case "$1" in
  start)
        log_daemon_msg "Starting deferred execution scheduler" "atd"
        start_daemon -p $PIDFILE $DAEMON -l 7
        log_end_msg $?

observe onde eu adicionei -l 7 part. Então você precisa reiniciar com /etc/init.d/atd restart e verificar com ps auxwww|grep atd se foi aceito.

observe que às vezes você terá /etc/default/atd , que é a maneira mais fácil (e melhor, já que suas alterações não serão apagadas na próxima atualização)

    
por 14.08.2016 / 00:11