From: Rick Jones <rick.jones2@hp.com>
To: Andi Kleen <ak@suse.de>
Cc: Linux Network Development list <netdev@vger.kernel.org>
Subject: Re: "meaningful" spinlock contention when bound to non-intr CPU?
Date: Fri, 02 Feb 2007 11:54:14 -0800 [thread overview]
Message-ID: <45C396E6.3080705@hp.com> (raw)
In-Reply-To: <200702022006.31934.ak@suse.de>
Andi Kleen wrote:
>>The meta question behind all that would seem to be whether the scheduler
>>should be telling us where to perform the network processing, or should
>>the network processing be telling the scheduler what to do? (eg all my
>>old blathering about IPS vs TOPS in HP-UX...)
>
>
> That's an unsolved problem. But past experiments suggest that giving
> the scheduler more imperatives than just "use CPUs well" are often net-losses.
I wasn't thinking about giving the scheduler more imperitives really
(?), just letting "networking" know more about where threads executed
accessing given connections. (eg TOPS)
> I suspect it cannot be completely solved in the general case.
Not unless the NIC can peer into the connection table and see where each
connection was last accessed by user-space.
>>Well, yes and no. If I drop the "burst" and instead have N times more
>>netperf's going, I see the same lock contention situation. I wasn't
>>expecting to - thinking that if there were then N different processes on
>>each CPU the likelihood of there being a contention on any one socket
>>was low, but it was there just the same.
>>
>>That is part of what makes me wonder if there is a race between wakeup
>
>
> A race?
Perhaps a poor choice of words on my part - something along the lines of:
hold_lock();
wake_up_someone();
release_lock();
where the someone being awoken can try to grab the lock before the path
doing the waking manages to release it.
>
>
>>and release of a lock.
>
>
> You could try with echo 1 > /proc/sys/net/ipv4/tcp_low_latency.
> That should change RX locking behaviour significantly.
Running the same 8 netperf's with TCP_RR and burst bound to different
CPU than the NIC interrupt, the lockmeter output looks virtually
unchanged. Still release_sock, tcp_v4_rcv, lock_sock_nested at their
same offsets.
However, if I run the multiple-connection-per-thread code, and have each
service 32 concurrent connections, and bind to a CPU other than the
interrupt CPU, the lock contention in this case does appear to go away.
rick jones
next prev parent reply other threads:[~2007-02-02 19:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-01 19:43 "meaningful" spinlock contention when bound to non-intr CPU? Rick Jones
2007-02-01 19:46 ` Rick Jones
2007-02-02 16:47 ` Jesse Brandeburg
2007-02-02 18:17 ` Rick Jones
2007-02-02 19:21 ` Andi Kleen
2007-02-02 18:46 ` Rick Jones
2007-02-02 19:06 ` Andi Kleen
2007-02-02 19:54 ` Rick Jones [this message]
2007-02-02 20:20 ` Andi Kleen
2007-02-02 20:41 ` Rick Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45C396E6.3080705@hp.com \
--to=rick.jones2@hp.com \
--cc=ak@suse.de \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.