Messages in this thread | | | Date | Tue, 16 Jun 2009 13:59:17 +0200 | From | Jens Axboe <> | Subject | Re: splice methods in character device driver |
| |
On Fri, Jun 12 2009, Steve Rottinger wrote: > Hi Leon, > > It does seem like a lot of code needs to be executed to move a small > chunk of data.
It's really not, you should try and benchmark the function call overhead :-).
> Although, I think that most of the overhead that I was experiencing > came from the cumulative > overhead of each splice system call. I increased my pipe size using > Jens' pipe size patch, > from 16 to 256 pages, and this had a huge effect -- the speed of my > transfers more than doubled. > Pipe sizes larger that 256 pages, cause my kernel to crash.
Yes, the system call is more expensive. Increasing the pipe size can definitely help there.
> I'm doing about 300MB/s to my hardware RAID, running two instances of my > splice() copy application > (One on each RAID channel). I would like to combine the two RAID > channels using a software RAID 0; > however, splice, even from /dev/zero runs horribly slow to a software > RAID device. I'd be curious > to know if anyone else has tried this?
Did you trace it and find out why it was slow? It should not be. Moving 300MB/sec should not be making any machine sweat.
-- Jens Axboe
| |