On 11 Dec 2009, at 12:41, Rainer Toebbicke wrote:


the afs that we distribute (as part of SLC - Scientific Linux for CERN) works with chunk files directly from the afs_linux_{read,write} entry points, namely in order to avoid the double copy and footprint.

That's an interesting approach - I'd like to see that code! My only worry would be that this is a relatively non-standard way of using the VFS interface. There are codepaths in the kernel which will call readpage() without calling read() or mmap() - so you need to be able to switch between the two interfaces - but it's certainly an interesting way of avoiding the double mapping problem, and a number of copies.

We only go through the VM when the file gets mmapped (nopage/ readpage), which except for 'ld' and running binaries does not happen very often.

There are a few other interfaces which benefit from the use of mappings. splice_write/splice_read, and the related sendfile/sendpage are the most obvious of these. I guess we could reimplement these in terms of direct operations on the backing chunk, rather than using the current default implementations, but I would start to worry about maintainability.

We've been running that code for some 3-4 years now, alas I never got around to benchmarking it properly. Apart from very small buffer sizes I don't see why avoiding another copy could slow things down, though.

I certainly can't see it making things any slower than they are in 1.4

I was about to submit it to openafs.org once when I discovered that I had accidentally messed up the read-ahead. And then forgot again...

It's for 1.4, though. I'd have to look at 1.5.


It would be great to see a 1.4 patch, even if it wasn't ready to go into the tree.

Cheers,

Simon.

_______________________________________________
OpenAFS-info mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-info

Reply via email to