如何限制stdout的输出速度?

如何限制stdout的输出速度?

我正在运行 CentOS 5.7,并且有一个备份实用程序,可以选择将其备份文件转储到stdout.备份文件相当大(数GB)。目标是 SSHFS 文件系统。为了确保不会占用带宽并降低网络性能,我想限制数据写入“磁盘”的速度。

如何限制stdout基于字节数的能力?例如,将进程的写入能力限制为大约 768Bps。

答案1

您可以向管道添加速率限制工具。

例如有pv它有一个速率限制选项:

-L RATE, --rate-limit RATE

将传输限制为每秒最大 RATE 字节。可以添加后缀“k”、“m”、“g”或“t”来表示千字节 (*1024)、兆字节等

另一种选择是工具buffer其中有:

   -u microseconds

每次写入都会暂停这么多微秒。默认为零。 (令人惊讶的是,每次写入后的一小段睡眠(100 us)可以极大地提高某些驱动器上的吞吐量。)

答案2

我很想将其转储到本地磁盘上,而不是直接将其写入远程卷。这样,您可以使用rsyncwith--bwlimit轻松限制传输。

这种方法的好处之一是,如果远程计算机的连接出现问题,传输就会中断,但备份本身不会突然爆炸。

答案3

光伏(管道视图)

echo asdlfkjasdf | pv -q -L 12

相关内容