Alternando uma tarefa longa para pausar / executar para reduzir a cpu

3

Eu tenho arquivos grandes que eu preciso para mv e mesmo com nice -n19 parece afetar o desempenho do servidor.

Acho que uma opção seria executar o processo em "chunks", por meio do qual executo o comando por alguns segundos, depois durmo por alguns e retome o processo.

Existe uma maneira de fazer isso a partir da linha de comando ou uma alternativa melhor? Atualmente eu faço um Ctrl Z e fg manualmente.

    
por Shahed 05.09.2015 / 20:38

2 respostas

4

Seu impacto no desempenho provavelmente é causado por um afunilamento de E / S porque mv normalmente não requer muitos ciclos de CPU (a menos que a criptografia / descriptografia esteja envolvida). nice altera a prioridade de agendamento da tarefa na lista de tarefas, que é executada na CPU.

Portanto, em vez de nice , tente (para o kernel > 2.6.25)

ionice -c3 mv <src> <dest>

De ionice -h

 ionice [options] <command>
   -c, --class <class>    name or number of scheduling class,
                      0: none, 1: realtime, 2: best-effort, 3: idle

De man ionice

 Idle   A program running with idle I/O priority will only get disk time 
        when no other program has asked for disk I/O for a defined grace 
        period.  The impact of an idle I/O process on normal system activity
        should be zero.
    
por 05.09.2015 / 20:52
1

Algo como:

$command & pid=$!
while kill -STP -$pid && sleep $interval && kill -CONT -$pid && sleep $interval; do :; done

poderia fazer isso.

O controle do trabalho é realmente sobre o envio desses dois sinais (SIGSTP e SIGCONT), de modo que este é basicamente o controle do trabalho feito manualmente.

    
por 05.09.2015 / 20:44