为什么Linux管道会减慢我的数据传输?

为什么Linux管道会减慢我的数据传输?

我注意到,如果我使用dd将数据从 移动/dev/zero/dev/null,我可以通过调整块大小达到最大值约 6.1GB/s。

dd if=/dev/zero of=/dev/null status=progress bs=512k count=2k
# 2048+0 records in
# 2048+0 records out
# 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.1768 s, 6.1 GB/s

但是,如果我dd通过管道将零设备连接到空设备,则最大速度约为 1.4GB/s,这大约是性能损失的 4.4 倍。

dd if=/dev/zero bs=64k count=16k status=none | dd of=/dev/null status=progress bs=64k
# 16384+0 records in
# 16384+0 records out
# 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.794066 s, 1.4 GB/s

我意识到dd两个例子中的块大小不同;使用bs=512管道产生的传输速率为 176MB/s。

相关内容