epoll is designed to reduce the cost of having many file descriptors in a process which are mostly idle. The kernel only reports data about active descriptors.
I changed MAXCLIENTS from 512 to 2048 so I could get some 'worst case' measurements. I figured x11perf -noop would be a nice test, and then when I saw what the 'Sync time adjustment' was in these situations, I wondered what x11perf -noop -sync would do and was surprised to see that the effect was even larger. Clearly, calling poll with thousands of file descriptors is expensive... -noop -noop -sync clients clients 1 505 2047 1 505 2047 epoll 53e6 53e6 53e6 140e3 140e3 140e3 poll 53e6 50e6 34e6 140e3 12e3 2e3 select 43e6 43e6 140e3 12e3 So, epoll clearly wins when we have a bunch of clients, but both poll and epoll are winning over select because we aren't sending 512 file descriptors into the kernel for it to mull over every time we call select. I want to clean up the patches on my epoll branch before trying to get them merged; there are a couple of false starts left in the branch before I figured out the interface I wanted. -- -keith
signature.asc
Description: PGP signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel