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 despejar seu arquivo de backup stdout. O arquivo de backup é bastante grande (vários gigabytes). O destino é um sistema de arquivos SSHFS. Para garantir que eu não monopolize 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 com stdoutbase em um número de bytes? Por exemplo, limitando a capacidade de um processo de gravar para cerca de 768Bps.

Wesley
fonte
6
@ msw esta pergunta é sobre limitação de taxa stdout, a pergunta anterior era sobre limitação de tráfego de rede. Diferentes animais ...
voretaq7
7
@msw Por último, verifiquei que o objetivo da rede SE é coletar uma quantidade enorme de conhecimento em áreas específicas. Nesse caso, trata-se de * nix. Limitar a saída de stdouté diferente de limitar a largura de banda. Só porque o problema subjacente é o mesmo, não significa que os futuros visitantes não considerem cada questão útil independentemente da outra. Lembre-se de que as perguntas e respostas são tanto para os googlers quanto para os que fazem perguntas reais, e é por isso que excluir perguntas respondidas é um pecado tão importante aqui.
MDMarra

Respostas:

28

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

Por exemplo, existe uma pvque tem uma opção de limitação de taxa:

-L RATE, --rate-limit RATE

Limite a transferência para um máximo de bytes RATE por segundo. É possível adicionar um sufixo "k", "m", "g" ou "t" para indicar kilobytes (* 1024), megabytes e assim por diante

Uma alternativa é a ferramenta bufferque possui:

   -u microseconds

Após cada pausa na gravação, há muitos microssegundos. O padrão é zero. (Surpreendentemente, um pequeno sono, 100 usecs, após cada gravação pode melhorar bastante a taxa de transferência em algumas unidades.)

maxschlepzig
fonte
4

pv (visualização em tubo)

echo asdlfkjasdf | pv -q -L 12
Ole Tange
fonte
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 rsynccom --bwlimitpara 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 um incêndio de glória.

MDMarra
fonte
Notado. Desejo que essa rsyncseja uma solução viável nessa situação bastante limitada em que me encontro. = |
23412 Wesley