有没有一种方法来提高Linuxpipe道的性能?

我试图使用64位CentOS 6pipe理从一个应用程序到另一个应用程序的极高速度的数据。我已经使用dd做了以下基准testing,发现pipe道阻碍了我,而不是我的程序中的algorithm。 我的目标是达到1.5 GB / s左右。

首先,没有pipe道:

 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进程之间的pipe道:

 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 

我可以对内核做些什么调整吗?或者其他什么可以提高通过pipe道运行数据的性能? 我也尝试了命名pipe道,并得到了类似的结果。

Solutions Collecting From Web of "有没有一种方法来提高Linuxpipe道的性能?"

你尝试过更小的块吗?

当我在自己的工作站上尝试时,我注意到在降低块大小的时候连续的改进。 在我的测试中只有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这是一个相当大的因素。