¿Cómo puedo limitar la velocidad de salida de stdout?

24

Estoy ejecutando CentOS 5.7 y tengo una utilidad de respaldo que tiene la opción de descargar su archivo de respaldo stdout. El archivo de respaldo es bastante grande (varios gigabytes). El objetivo es un sistema de archivos SSHFS. Para asegurarme de no acaparar el ancho de banda y degradar el rendimiento de la red, me gustaría limitar la velocidad con la que los datos se escriben en el "disco".

¿Cómo puedo limitar la capacidad de stdoutbasarme en un número de byte? Por ejemplo, limitar la capacidad de un proceso para escribir a unos 768 Bps.

Wesley
fuente
66
@msw esta pregunta trata sobre la limitación de velocidad stdout, la pregunta anterior era sobre limitar el tráfico de red. Diferentes bestias ...
voretaq7
77
@msw La última vez que revisé, el objetivo de la red SE es recopilar una gran cantidad de conocimiento en áreas específicas. En este caso, se trata de * nix. Limitar la salida de stdoutes diferente a limitar el ancho de banda. El hecho de que el problema subyacente sea el mismo no significa que los futuros visitantes no encuentren útil cada pregunta independientemente de la otra. Recuerde que las preguntas y respuestas son tanto para los googlers como para los que las preguntan, por lo que eliminar las preguntas respondidas es un pecado tan importante aquí.
MDMarra

Respuestas:

27

Puede agregar una herramienta de limitación de velocidad a su tubería.

Por ejemplo, hay una pvque tiene una opción de limitación de velocidad:

-L RATE, --rate-limit RATE

Limite la transferencia a un máximo de RATE bytes por segundo. Se puede agregar un sufijo de "k", "m", "g" o "t" para denotar kilobytes (* 1024), megabytes, etc.

Una alternativa es la herramienta bufferque tiene:

   -u microseconds

Después de cada pausa de escritura para estos microsegundos. Por defecto es cero. (Sorprendentemente, una pequeña suspensión, 100 usuarios, después de cada escritura puede mejorar en gran medida el rendimiento en algunas unidades).

maxschlepzig
fuente
3

Estaría tentado a volcar esto en un disco local en lugar de escribirlo directamente en el volumen remoto. De esta manera se puede utilizar rsynccon --bwlimitlimitar fácilmente la transferencia.

Uno de los beneficios de este enfoque es que si hay un problema de conectividad con la máquina remota, la transferencia se interrumpe, pero la copia de seguridad en sí no explota en un resplandor de gloria.

MDMarra
fuente
Célebre. Desearía que rsyncfuera una solución viable en esta situación bastante limitada en la que me encuentro. = |
Wesley
3

pv (vista de tubería)

echo asdlfkjasdf | pv -q -L 12
Ole Tange
fuente