Messages in this thread | | | Date | Thu, 25 Jun 1998 14:46:54 +1000 | From | Richard Gooch <> | Subject | Re: Thread implementations... |
| |
Linus Torvalds writes: > In article <19980625161310.B22513@caffeine.ix.net.nz>, > Chris Wedgwood <chris@cybernet.co.nz> wrote: > >On Wed, Jun 24, 1998 at 10:13:57PM +1000, Richard Gooch wrote: > > > >> If we get madvise(2) right, we don't need sendfile(2), correct? > > > >It would probably suffice. In fact, having a working implementation of > >madvise, etc. would make sendfile pretty trivial to do in libc. (Again, I > >assuming that whether or not we need it, if it can be implemented in > >userspace then why not...) > > However, the thing to notice is that a "sendfile()" system call can > potentially be a lot faster than anything else. In particular, it can > be as clever as it wants about sending stuff directly from kernel > buffers etc. > > I know there are a lot of people who think zero-copying is cool, and > that tricks with mmap() etc can be used to create zero-copy. But don't > forget that it's a major mistake to think that performance is about > whether the algorithm is O(1) or O(n) or O(n^2). People tend to forget > the constant factor, and look blindly at other things. > > In particular, doing a mmap() itself is fairly expensive. It implies a > lot of bookkeeping, and it also implies a fair amount of mucking around > with CPU VM issues (TLBs, page tables etc). In short, it can be rather > expensive. > > Due to that expense, things that use mmap() often have a "cache" of > mappings that they have active. Thet gets rid of one expense, but then > there is the new expense of maintaining that cache (and it can be a > fairly costly thing to maintain if you want to doa threaded webserver). > > In contrast, a "sendfile()" approach can be extremely light-weight, and > threads much better because it doesn't imply the same kinds of > maintenance. > > Now, I'm no NT person, but I suspect that we actually do want to have a > "sendfile()" kind of thing just because it should be fairly easy to > implement, and would offer some interesting performance advantages for > some cases. No, it's not truly generic, but it is useful enough in many > circustances.
Well, that's fine. I just hope that we get a better madvise(2) at some point too.
Regards,
Richard....
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |