Messages in this thread | | | Date | Sun, 22 Sep 2013 20:41:37 +0000 | From | Eric Wong <> | Subject | Re: [RFC] eventpoll: Move a kmem_cache_alloc and kmem_cache_free |
| |
Jason Baron <jbaron@akamai.com> wrote: > epoll: reduce usage of global 'epmutex' lock > > Epoll file descriptors that are 1 link from a wakeup source and > are not nested within other epoll descriptors, or pointing to > other epoll descriptors, don't need to check for loop creation or > the creation of wakeup storms. Because of this we can avoid taking > the global 'epmutex' in these cases. This state for the epoll file > descriptor is marked as 'EVENTPOLL_BASIC'. Once the epoll file > descriptor is attached to another epoll file descriptor it is > labeled as 'EVENTPOLL_COMPLEX', and full loop checking and wakeup > storm creation are checked using the the global 'epmutex'. It does > not transition back. Hopefully, this is a common usecase...
Cool. I was thinking about doing the same thing down the line (for EPOLL_CTL_ADD, too)
> @@ -166,6 +167,14 @@ struct epitem { > > /* The structure that describe the interested events and the source fd */ > struct epoll_event event; > + > + /* TODO: really necessary? */ > + int on_list;
There's some things we can overload to avoid increasing epitem size (.ep, .ffd.fd, ...), so on_list should be unnecessary.
| |