Messages in this thread |  | | | Subject | Re: [PATCH 0/1] RFC: poll/select performance on datagram sockets | | From | Eric Dumazet <> | | Date | Fri, 29 Oct 2010 21:27:11 +0200 |
| |
Le vendredi 29 octobre 2010 à 19:18 +0100, Alban Crequy a écrit : > Hi, > > When a process calls the poll or select, the kernel calls (struct > file_operations)->poll on every file descriptor and returns a mask of > events which are ready. If the process is only interested by POLLIN > events, the mask is still computed for POLLOUT and it can be expensive. > For example, on Unix datagram sockets, a process running poll() with > POLLIN will wakes-up when the remote end call read(). This is a > performance regression introduced when fixing another bug by > 3c73419c09a5ef73d56472dbfdade9e311496e9b and > ec0d215f9420564fc8286dcf93d2d068bb53a07e. > > The attached program illustrates the problem. It compares the > performance of sending/receiving data on an Unix datagram socket and > select(). When the datagram sockets are not connected, the performance > problem is not triggered, but when they are connected it becomes a lot > slower. On my computer, I have the following time: > > Connected datagram sockets: >4 seconds > Non-connected datagram sockets: <1 second > > The patch attached in the next email fixes the performance problem: it > becomes <1 second for both cases. I am not suggesting the patch for > inclusion; I would like to change the prototype of (struct > file_operations)->poll instead of adding ->poll2. But there is a lot of > poll functions to change (grep tells me 337 functions). > > Any opinions?
My opinion would be to use epoll() for this kind of workload.
Also, about unix_datagram_poll() being slow, it probably can be addressed separately.
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |