2008年9月4日 星期四

splice

http://linux.die.net/man/2/splice
http://linux.die.net/man/2/vmsplice
http://www.scribd.com/doc/4006475/Splice-Tee-VMsplice-zero-copy-in-Linux



An Evaluation of TCP Splice Benefits in Web Proxy Servers
020507, Marcel-Catalin Rosu, Daniela Rosu
http://www2002.org/CDROM/refereed/627/

030101, Dragan Stancevic
Zero Copy I: User-Mode Perspective
http://www.linuxjournal.com/article/6345

050115, Linus Torvalds
sys_splice()
Re: Make pipe data structure be a circular list of pages, rather
http://lwn.net/Articles/119680/

060403, corbet
Two new system calls: splice() and sync_file_range()
http://lwn.net/Articles/178199/

060411, corbet
tee() with your splice()?
http://lwn.net/Articles/179492/


060420, Jens Axboe <axboe-at-suse.de>
splice status
http://lwn.net/Articles/181170/

Linux: Explaining splice() and tee()
060421 Jeremy
http://kerneltrap.org/node/6505.

Splice tools
http://brick.kernel.dk/snaps/
http://brick.kernel.dk/snaps/splice-git-latest.tar.gz

060920,Ashwini Kulkarni
TCP socket splice
http://lkml.org/lkml/2006/9/20/272

061116, Jim Schutt
splice/vmsplice performance test results
http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-11/msg05074.html

061221, saeed bishara
using splice/vmsplice to improve file receive performance
->2006 Dec
http://readlist.com/lists/vger.kernel.org/linux-kernel/58/290439.html
2007 Jan ->
http://readlist.com/lists/vger.kernel.org/linux-kernel/58/292744.html
easier to read
->2006 Dec
http://www.uwsg.indiana.edu/hypermail/linux/kernel/0612.2/1630.html
2007 Jan ->
http://www.uwsg.iu.edu/hypermail/linux/kernel/0701.0/0719.html
Tests described can't be repeated. Maybe due to different kernel version?
There is no output from console, but traffic can be observed from lo. I got 96MiB/s on my Acer Aspire4720Z.
I added a simple splice-fromnet example in the splice git repo, see if
you can repeat your results with that. Doing:

# ./splice-fromnet -g 2001 | ./splice-out -m /dev/null

and

# cat /dev/zero | netcat localhost 2001

gets me about 490MiB/sec, using a recv/write loop is around 413MiB/sec.
Not migrating pages gets me around 422MiB/sec.

This test is ok, too. The file g is generated and filled with the content of input user space memory data.
It works for me, with most pages. Using the vmsplice/splice-out from the
splice tools, doing

$ ./vmsplice -g | ./splice-out -m g

about half of the pages have count==1 and the steal suceeds.



080616
socket splice size limit
http://kerneltrap.org/node/16297
(no replies)

沒有留言: