Re: [RFC,PATCH] use rcu for fasync_lock

Jamie Lokier
2004-01-02T22:42:13Z

Bill Davidsen wrote:
> Jamie Lokier wrote:
> >We have found the performance impact of the extra ->poll calls
> >negligable with epoll. They're simply not slow calls. It's
> >only when you're doing select() or poll() of many descriptors
> >repeatedly that you notice, and that's already poor usage in other
> >ways.
>
> I do agree with you, but there is a lot of old software, and software
> written on/for BSD, which does do this. I'm not prepared to say that BSD
> does it better, but it's easier to fix in one place, the kernel, than
> many other places.
>
> Your point about the complexity is also correct, but perhaps someone
> will offer a better solution to speeding up select(). I think anything
> as major as this might be better off in a development series, and that's
> a clear prod for someone to find a simpler way to do it ;-)

Eliminating up to half of the ->poll calls using wake_up_info() and
reducing the number of wakeups using an event mask argument to ->poll
are not the best ways to speed up select() or poll() for large numbers
of descriptors.

The best way is to maintain poll state in each "struct file". The
order of complexity for the bitmap scan is still significant, but
->poll calls are limited to the number of transitions which actually
happen.

I think somebody, maybe Richard Gooch, has a patch to do this that's
several years old by now.

-- Jamie