当前位置:  开发笔记 > 运维 > 正文

有没有办法提高linux管道的性能?

如何解决《有没有办法提高linux管道的性能?》经验,为你挑选了1个好方法。

我正在尝试使用64位CentOS 6 将极高速数据从一个应用程序传输到另一个应用程序.我已经完成了以下基准测试dd,发现管道阻止了我而不是程序中的算法.我的目标是达到大约1.5 GB/s的速度.

首先,没有管道:

dd if=/dev/zero of=/dev/null bs=8M count=1000
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied, 0.41925 s, 20.0 GB/s

接下来,两个dd进程之间的管道:

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied, 9.39205 s, 893 MB/s

我可以对内核或其他任何可以改善通过管道运行数据的性能的调整吗?我也尝试了命名管道,并获得了类似的结果.



1> opaque..:

你试过较小的块吗?

当我在自己的工作站上试用时,我注意到在降低块大小时的连续改进.在我的测试中,它仅在10%的范围内,但仍然是一种改进.你正在寻找100%.

事实证明,进一步测试,真正的小块大小似乎可以解决问题:

我试过了

dd if=/dev/zero bs=32k count=256000 | dd of=/dev/null bs=32k
256000+0 records in
256000+0 records out
256000+0 records in
256000+0 records out
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 1.67965 s, 5.0 GB/s
, 1.68052 s, 5.0 GB/s

和你的原创

dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M
1000+0 records in
1000+0 records out
1000+0 records in
1000+0 records out
8388608000 bytes (8.4 GB) copied8388608000 bytes (8.4 GB) copied, 6.25782 s, 1.3 GB/s
, 6.25203 s, 1.3 GB/s

5.0/1.3 = 3.8因此这是一个相当大的因素.


IMO,问题与问题文本或答案均不匹配。我想自己了解实际问题的答案。:D
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有