Como posso limitar a velocidade de saída do stdout?

24

Estou executando o CentOS 5.7 e tenho um utilitário de backup que tem a opção de descartar seu arquivo de backup em stdout . O arquivo de backup é bastante grande (vários gigabytes). O alvo é um sistema de arquivos SSHFS. Para garantir que não oculte a largura de banda e prejudique o desempenho da rede, gostaria de limitar a velocidade com que os dados são gravados no "disco".

Como posso limitar a capacidade de stdout com base em um número de bytes? Por exemplo, limitando a capacidade de um processo de gravar em cerca de 768 Bps.

    
por Wesley 14.03.2012 / 19:52

3 respostas

28

Você pode adicionar uma ferramenta de limitação de taxa ao seu canal.

Por exemplo, há pv que tem uma opção de limitação de taxa:

-L RATE, --rate-limit RATE

Limit the transfer to a maximum of RATE bytes per second. A suffix of "k", "m", "g", or "t" can be added to denote kilobytes (*1024), megabytes, and so on

Uma alternativa é a ferramenta buffer que tem:

   -u microseconds

After every write pause for this many microseconds. Defaults to zero. (Surprisingly a small sleep, 100 usecs, after each write can greatly enhance throughput on some drives.)

    
por 14.03.2012 / 20:06
4

pv (exibição de tubulação)

echo asdlfkjasdf | pv -q -L 12
    
por 14.03.2012 / 20:02
3

Eu ficaria tentado a despejar isso em um disco local em vez de gravá-lo diretamente no volume remoto. Dessa forma, você pode usar rsync com --bwlimit para limitar facilmente a transferência.

Um dos benefícios dessa abordagem é que, se houver um problema de conectividade com a máquina remota, a transferência será interrompida, mas o backup em si não explodirá em uma explosão de glória.

    
por 14.03.2012 / 20:01