Jason Baron <jbaron@xxxxxxxxxx> 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. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html