From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761931Ab0J2Ua0 (ORCPT ); Fri, 29 Oct 2010 16:30:26 -0400 Received: from swampdragon.chaosbits.net ([90.184.90.115]:13254 "EHLO swampdragon.chaosbits.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757938Ab0J2UaY (ORCPT ); Fri, 29 Oct 2010 16:30:24 -0400 Date: Fri, 29 Oct 2010 22:20:12 +0200 (CEST) From: Jesper Juhl To: Eric Dumazet cc: Alban Crequy , "David S. Miller" , Stephen Hemminger , Cyrill Gorcunov , Alexey Dobriyan , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Pauli Nieminen , Rainer Weikusat Subject: Re: [PATCH 0/1] RFC: poll/select performance on datagram sockets In-Reply-To: <1288380431.2680.3.camel@edumazet-laptop> Message-ID: References: <20101029191857.5f789d56@chocolatine.cbg.collabora.co.uk> <1288380431.2680.3.camel@edumazet-laptop> User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1149779595-1288383612=:24561" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1149779595-1288383612=:24561 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: 8BIT On Fri, 29 Oct 2010, Eric Dumazet wrote: > 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. > Sorry to intrude out of the blue without really understanding the kernel side of most of the code in question, but if there's a performance regression for applications using poll() shouldn't we address that so we get back to the prior performance level rather than requireing all userspace apps to switch to epoll() ?? -- Jesper Juhl http://www.chaosbits.net/ Plain text mails only, please http://www.expita.com/nomime.html Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html --8323328-1149779595-1288383612=:24561--