[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.00.1010291451330.8517@davide-lnx1>
Date: Fri, 29 Oct 2010 14:57:28 -0700 (PDT)
From: Davide Libenzi <davidel@...ilserver.org>
To: Eric Dumazet <eric.dumazet@...il.com>
cc: Alban Crequy <alban.crequy@...labora.co.uk>,
"David S. Miller" <davem@...emloft.net>,
Stephen Hemminger <shemminger@...tta.com>,
Cyrill Gorcunov <gorcunov@...nvz.org>,
Alexey Dobriyan <adobriyan@...il.com>, netdev@...r.kernel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Pauli Nieminen <pauli.nieminen@...labora.co.uk>,
Rainer Weikusat <rweikusat@...gmbh.com>
Subject: Re: [PATCH 0/1] RFC: poll/select performance on datagram sockets
On Fri, 29 Oct 2010, Eric Dumazet wrote:
> Following patch solves the problem for me, and its only a start, I am
> pretty sure we can optimize more than that.
>
> What I did is to move "struct poll_wqueues table;" out of do_select()
> in its caller. This structure is highly modified by an other cpu in
> Alban workload, and this slow down do_select() because many accesses to
> some of its local variables (normally, private ones !) hit a false
> sharing.
>
> Before :
>
> # time /root/uclient connected
> The performance problem will be triggered
> select: begin
> select: end: 3 seconds
>
> real 0m3.101s
> user 0m0.000s
> sys 0m6.104s
>
> After :
>
> # time /root/uclient connected
> The performance problem will be triggered
> select: begin
> select: end: 1 seconds
>
> real 0m1.041s
> user 0m0.004s
> sys 0m2.040s
>
>
> Impressive no ?
It is, though I am not sure that shuffling code around to chase false
sharing on very specific cases, is an approach worth following.
The new position of the table on the stack might share with another hot
line, under a different load.
- Davide
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists