splice性能测试

linux 下测试了一下splice copy的性能:

 

似乎一般的读,效果更好??

注意每次拷贝以前要rm data

[ning@leap splice_test]$ time ./splice_copy from_data  data 1024

real    0m7.795s
user    0m0.000s
sys     0m4.790s


[ning@leap splice_test]$ time ./rw_copy from_data  data 1024
real    0m7.044s
user    0m0.000s
sys     0m2.351s


[ning@leap splice_test]$ time cp from_data data

real    0m6.879s
user    0m0.000s
sys     0m2.849s

[ning@leap splice_test]$ time dd if=from_data of=data
1978384+1 records in
1978384+1 records out
1012933100 bytes (1.0 GB) copied, 9.35868 seconds, 108 MB/s

real    0m9.360s
user    0m0.000s
sys     0m8.421s



环境:

cpu
8核8g内存
每个核:
Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
cpu MHz         : 2499.613
cache size      : 6144 KB
mem
MemTotal:        8169020 kB
MemFree:         2376992 kB
Buffers:           15508 kB
Cached:           136296 kB

Linux leap 2.6.23 #2 SMP Fri Oct 9 21:38:13 CST 2009 x86_64 x86_64 x86_64 GNU/Linux

测试代码见附件~


最初对splice的用法来自与: linux test project
http://ltp.cvs.sourceforge.net/

另外,这位(http://lkml.org/lkml/2006/11/16/162)仁兄也说splice的效果没有他想象的那么好,他那里有源代码,不过我没有编译成功。。

这里是 linus的讨论: http://kerneltrap.org/node/6505
这里是对应的man page: http://www.kernel.org/doc/man-pages/online/pages/man2/splice.2.html

实验过程中,发现splice使用的pipe有限制:64K -看来不能改了。。
/usr/src/linux/include/linux/pipe_fs_i.h
#define PIPE_BUFFERS (16)  

你可能感兴趣的:(html,linux,.net,cache,cvs)