On Fri, Jan 09, 2009 at 08:28:09AM +0100, Eric Dumazet wrote:Yes it will, precisely because during the time you spend processing flow #1, you're still receiving data for flow #2. I really invite you to try. That's what I've been observing for years of userland coding of proxies. I also observe 23000 bytes on average on gigabit, which is very good (only about 5000 calls per second). And the CPU usage is lower than with recv/send, and I'd like to be able to run some profiling because I observed very different performance patterns depending on the network cards used. Generally, almost all the time is spent in softirqs. It's easy to make poll wait a little bit more : call it later and do your work before calling it. Also, epoll_wait() lets you ask it to return just a few amount of FDs. This really improves data gathering. I generally observe best performance between 30-200 FDs per call, even with 10000 concurrent connections. During the time I process the first 200 FDs, data is accumulating in the other's buffers. Yes, I agree about that. But my comment was about not making this behaviour mandatory for splice(). Letting the application choose is the way to go, of course. Yes but that's not always easy to guess how many data you can feed into the pipe. It seems that depending on how the segments are gathered, you can store between 16 segments and 64 kB. I have observed some cases in blocking mode where I could not push more than a few kbytes with a small MSS, indicating to me that all those segments were each on a distinct page. I don't know precisely how that's handled internally. OK, I initially understood that you suggested we could simply remove it like I did for splice. Agreed :-) Willy -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Linus Torvalds | Linux 2.6.21-rc4 |
| Jens Axboe | [PATCH 0/8] IO queuing and complete affinity |
| Nicholas A. Bellinger | Re: Integration of SCST in the mainstream Linux kernel |
| Robin Lee Powell | NFS hang + umount -f: better behaviour requested. |
git: | |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Ingo Molnar | Re: [crash] BUG: unable to handle kernel NULL pointer dereference at 0000000000000... |
| Gerrit Renker | [PATCH 19/37] dccp: Header option insertion routine for feature-negotiation |
| Gary Thomas | Marvell 88E609x switch? |
| Jamie Lokier | Re: silent semantic changes with reiser4 |
| Jan Kara | [PATCH 10/16] ext4: Remove syncing logic from ext4_file_write |
| Jack Stone | Re: Versioning file system |
| Jens Axboe | [PATCH 8/8] vm: Add an tuning knob for vm.max_writeback_pages |
