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