tar gzip abrandando servidor

3

Eu tenho um script de backup que:

  1. comprima alguns arquivos
  2. gerar md5
  3. copie o arquivo compactado para outro servidor.
  4. o outro servidor termina de comparar o MD5 (para encontrar erros de cópia).

Aqui está o script principal:

nice -n 15 tar -czvf $BKP $PATH_BKP/*.* \
| xargs -I '{}' sh -c "test -f '{}' && md5sum '{}'" \
| tee $MD5
scp -l 80000 $BKP $SCP_BKP
scp $MD5 $SCP_BKP

Esta rotina tem CPU a 90% na rotina gzip, tornando o servidor de produção mais lento. Eu tentei adicionar um nice -n 15 , mas o servidor ainda trava.

Eu já li 1 mas a conversa não me ajudou.

Qual é a melhor abordagem para resolver esse problema? Estou aberto a novas arquiteturas / soluções:)

    
por Josir 29.06.2012 / 20:49

3 respostas

5

Se você usar bom, você muda a prioridade, mas isso terá um impacto perceptível somente se a CPU estiver próxima de 100% de uso.

O servidor se torna lento, no seu caso, não por causa do uso da CPU, mas por causa da E / S no armazenamento. Use ionice para alterar a prioridade de E / S e mantenha o nice para a prioridade da CPU.

    
por 29.06.2012 / 21:09
1

Você pode tentar usar chrt para alterar a política de agendamento do programa tar para SCHED_BATCH.

De acordo com a página man sched_setscheduler (2)

SCHED_BATCH: Scheduling batch processes (Since Linux 2.6.16.) SCHED_BATCH can only be used at static priority 0. This policy is similar to SCHED_OTHER in that it schedules the process according to its dynamic priority (based on the nice value). The difference is that this policy will cause the scheduler to always assume that the process is CPU-intensive. Consequently, the scheduler will apply a small scheduling penalty with respect to wakeup behaviour, so that this process is mildly disfavored in scheduling decisions.

   This policy is useful for workloads that are noninteractive, but do not
   want to lower their nice value, and for workloads that want a determin‐
   istic scheduling policy without interactivity causing extra preemptions
   (between the workload's tasks).

Se você ainda estiver sem sorte, tente o SCHED_IDLE. Isso faria com que este programa só fosse ativado se não houvesse mais nada para executar.

Isso altera a linha de alcatrão para esse lote:

nice -n 15 chrt -b tar -czvf $BKP $PATH_BKP/*.* \
    
por 29.06.2012 / 21:20
0

Você já tentou usar pigz em vez de gzip?

    
por 30.06.2012 / 12:57

Tags