Evitar que o tar use muita CPU

1

Estou executando um tar, ou seja, tar xzvf abc.tar.gz no Beaglebone green. Isso parece estar usando muita CPU. Quando uma operação untar está em andamento, eu vejo via comando top o uso da CPU .. não tenho certeza porque parece que está criando 2 processos diferentes, alguma idéia porque ???

 PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
  626   625 root     R     1956   1%  64% tar xzvf abc.tar.gz
  625   612 root     S     1960   1%  12% tar xzvf abc.tar.gz

Como posso limitar o processo untar para não usar muita CPU? Existe um processo crítico em tempo real que não está obtendo CPU e é afetado sempre que o untar é executado. Daí a necessidade de limitar o untar de alguma forma para não usar mais do que pode ser 40 - 50% da CPU a qualquer momento.

    
por OpenSourceEnthusiast 17.09.2018 / 06:35

2 respostas

1

 cpulimit -fl 50 -- tar xzvf abc.tar.gz

man cpulimit:

   cpulimit -- limits the CPU usage of a process

   -l, --limit=N
          percentage of CPU allowed from 1 up. Usually 1 - 100, but can be
          higher on multi-core CPUs. (mandatory)

   -f, --foreground
          run cpulimit in foreground while waiting for launched process to
          finish


   •   cpulimit always sends the SIGSTOP and SIGCONT signals to a process,
       both to verify that it can control it  and  to  limit  the  average
       amount  of  CPU it consumes.  This can result in misleading (annoy‐
       ing) job control messages that  indicate  that  the  job  has  been
       stopped  (when  actually  it was, but immediately restarted).  This
       can also cause issues with interactive shells that detect or other‐
       wise  depend on SIGSTOP/SIGCONT.   For example, you may place a job
       in the foreground, only to see it immediately stopped and restarted
       in the background.
    
por 17.09.2018 / 06:42
1

Você só deseja limitar o uso da CPU se a CPU estiver ficando muito quente ou qualquer problema que possa surgir quando a CPU estiver sendo usada ou quando você não quiser que uma tarefa seja executada tão rapidamente.

Não usá-lo totalmente é apenas desperdiçar ciclos de CPU na "tarefa ociosa"

Se o problema é que você prefere que outro processo tenha prioridade para esses ciclos de CPU, a solução é diminuir a prioridade de tar / gzip ou, em outras palavras, aumentar sua preferência .

Por exemplo, usando:

nice 20 tar...

Onde 20 é a maior gentileza. Dessa forma, tar terá poucos ciclos de CPU se outros processos exigirem alguns, mas ainda usará 100% da CPU quando o sistema não tiver mais nada a fazer.

Agora, se o seu outro processo realmente usa prioridades em tempo real, você não deve fazer isso, pois o escalonador deve dar precedência a processos em tempo real sobre processos normais, então pode ser que a CPU não seja o recurso que seu processo não pode ser controlado e nem alterar a prioridade nem reduzir o uso da CPU de tar ajudará.

Você também pode usar ionice on tar :

nice 20 ionice -c idle tar...

Citando a página ionice man:

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 17.09.2018 / 09:14

Tags