Messages in this thread | | | Subject | Re: Thread implementations... | From | Andi Kleen <> | Date | 27 Jun 1998 10:00:04 +0200 |
| |
Linus Torvalds <torvalds@transmeta.com> writes:
> I've also done some more testing of sendfile(), and the nice thing is that > when I compared doing a file copy with sendfile compared to a plain "cp", > the sendfile implementation was about twice as fast (at least my version > of "cp" will just do read+write pairs over and over again). When I copied > a 38MB file the "cp" took 1:58 seconds while sendfile took 1:08 seconds > according to "time" (I have 512MB of RAM, so this was all cached, > obviously)..
But how does it look if you compare it to something that uses mmap() ? On my machine GNU cp always seems to use read/write for copying.
In this situation it would be nice to "redeclare" a mmaped region to another fd. Currently it would have to do either mmap()->write() [implicit copy] or mmap()->mmaped region[explicit copy], because one mmaped data region can only belong to a specific inode.
Something like: adr = mmap(0, length, PROT_READ, MAP_SHARED, input_fd, offset); mmap(adr, length, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_REUSE, output_fd, offset); msync(adr, length, MS_INVALIDATE); To copy data without it ever leaving the page cache. Do you think that is possible, or are the fixed costs of mmap just too big to make it worthwhile?
-Andi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |