All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Eric Dumazet <dada1@cosmosbay.com>,
	David Miller <davem@davemloft.net>,
	rjw@sisk.pl, linux-kernel@vger.kernel.org,
	kernel-testers@vger.kernel.org, cl@linux-foundation.org,
	efault@gmx.de, a.p.zijlstra@chello.nl,
	Stephen Hemminger <shemminger@vyatta.com>
Subject: __inet_lookup_established(): Re: [Bug #11308] tbench regression on each kernel release from 2.6.22 -&gt; 2.6.28
Date: Mon, 17 Nov 2008 22:35:20 +0100	[thread overview]
Message-ID: <20081117213520.GI12020@elte.hu> (raw)
In-Reply-To: <20081117184951.GA5585@elte.hu>


* Ingo Molnar <mingo@elte.hu> wrote:

> 100.000000 total
> ................
>   1.673249 __inet_lookup_established

                      hits (total: 167324)
                 .........
ffffffff804b9b12:      446 <__inet_lookup_established>:
ffffffff804b9b12:      446 	41 57                	push   %r15
ffffffff804b9b14:     4810 	89 d0                	mov    %edx,%eax
ffffffff804b9b16:        0 	0f b7 c9             	movzwl %cx,%ecx
ffffffff804b9b19:        0 	41 56                	push   %r14
ffffffff804b9b1b:      456 	41 55                	push   %r13
ffffffff804b9b1d:        0 	41 54                	push   %r12
ffffffff804b9b1f:        0 	55                   	push   %rbp
ffffffff804b9b20:      427 	53                   	push   %rbx
ffffffff804b9b21:        4 	48 89 f3             	mov    %rsi,%rbx
ffffffff804b9b24:        2 	44 89 c6             	mov    %r8d,%esi
ffffffff804b9b27:      504 	41 89 c8             	mov    %ecx,%r8d
ffffffff804b9b2a:        1 	49 89 f7             	mov    %rsi,%r15
ffffffff804b9b2d:        1 	48 83 ec 08          	sub    $0x8,%rsp
ffffffff804b9b31:      462 	49 c1 e7 20          	shl    $0x20,%r15
ffffffff804b9b35:        0 	48 89 3c 24          	mov    %rdi,(%rsp)
ffffffff804b9b39:      507 	89 d7                	mov    %edx,%edi
ffffffff804b9b3b:       38 	41 0f b7 d1          	movzwl %r9w,%edx
ffffffff804b9b3f:        0 	41 89 d6             	mov    %edx,%r14d
ffffffff804b9b42:      863 	49 09 c7             	or     %rax,%r15
ffffffff804b9b45:       24 	41 c1 e6 10          	shl    $0x10,%r14d
ffffffff804b9b49:        0 	41 09 ce             	or     %ecx,%r14d
ffffffff804b9b4c:      479 	89 f9                	mov    %edi,%ecx
ffffffff804b9b4e:        8 	48 8b 3c 24          	mov    (%rsp),%rdi
ffffffff804b9b52:        0 	e8 cc f4 ff ff       	callq  ffffffff804b9023 <inet_ehashfn>
ffffffff804b9b57:      413 	48 89 df             	mov    %rbx,%rdi
ffffffff804b9b5a:      122 	41 89 c5             	mov    %eax,%r13d
ffffffff804b9b5d:        0 	89 c6                	mov    %eax,%esi
ffffffff804b9b5f:      635 	e8 3e f5 ff ff       	callq  ffffffff804b90a2 <inet_ehash_bucket>
ffffffff804b9b64:      511 	48 89 c5             	mov    %rax,%rbp
ffffffff804b9b67:        6 	44 89 e8             	mov    %r13d,%eax
ffffffff804b9b6a:        0 	23 43 14             	and    0x14(%rbx),%eax
ffffffff804b9b6d:      497 	4c 8d 24 85 00 00 00 	lea    0x0(,%rax,4),%r12
ffffffff804b9b74:        0 	00 
ffffffff804b9b75:        1 	4c 03 63 08          	add    0x8(%rbx),%r12
ffffffff804b9b79:        0 	48 8b 45 00          	mov    0x0(%rbp),%rax
ffffffff804b9b7d:      470 	0f 18 08             	prefetcht0 (%rax)
ffffffff804b9b80:        0 	4c 89 e7             	mov    %r12,%rdi
ffffffff804b9b83:     1089 	e8 32 cd 05 00       	callq  ffffffff805168ba <_read_lock>
ffffffff804b9b88:     6752 	48 8b 55 00          	mov    0x0(%rbp),%rdx
ffffffff804b9b8c:      598 	eb 2c                	jmp    ffffffff804b9bba <__inet_lookup_established+0xa8>
ffffffff804b9b8e:      447 	48 81 3c 24 d0 15 ab 	cmpq   $0xffffffff80ab15d0,(%rsp)
ffffffff804b9b95:        0 	80 
ffffffff804b9b96:     1119 	75 1f                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9b98:       21 	4c 39 b8 30 02 00 00 	cmp    %r15,0x230(%rax)
ffffffff804b9b9f:        0 	75 16                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9ba1:      492 	44 39 b0 38 02 00 00 	cmp    %r14d,0x238(%rax)
ffffffff804b9ba8:        0 	75 0d                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9baa:        0 	8b 52 fc             	mov    -0x4(%rdx),%edx
ffffffff804b9bad:      451 	85 d2                	test   %edx,%edx
ffffffff804b9baf:        0 	74 67                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bb1:        0 	3b 54 24 40          	cmp    0x40(%rsp),%edx
ffffffff804b9bb5:        0 	74 61                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bb7:        0 	48 89 ca             	mov    %rcx,%rdx
ffffffff804b9bba:      402 	48 85 d2             	test   %rdx,%rdx
ffffffff804b9bbd:     1006 	74 12                	je     ffffffff804b9bd1 <__inet_lookup_established+0xbf>
ffffffff804b9bbf:        0 	48 8d 42 f8          	lea    -0x8(%rdx),%rax
ffffffff804b9bc3:      821 	48 8b 0a             	mov    (%rdx),%rcx
ffffffff804b9bc6:       78 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9bca:        4 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9bcd:      685 	75 e8                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9bcf:   139502 	eb bd                	jmp    ffffffff804b9b8e <__inet_lookup_established+0x7c>
ffffffff804b9bd1:        0 	48 8b 55 08          	mov    0x8(%rbp),%rdx
ffffffff804b9bd5:        0 	eb 26                	jmp    ffffffff804b9bfd <__inet_lookup_established+0xeb>
ffffffff804b9bd7:        0 	48 81 3c 24 d0 15 ab 	cmpq   $0xffffffff80ab15d0,(%rsp)
ffffffff804b9bde:        0 	80 
ffffffff804b9bdf:        0 	75 19                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9be1:        0 	4c 39 78 40          	cmp    %r15,0x40(%rax)
ffffffff804b9be5:        0 	75 13                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9be7:        0 	44 39 70 48          	cmp    %r14d,0x48(%rax)
ffffffff804b9beb:        0 	75 0d                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9bed:        0 	8b 52 fc             	mov    -0x4(%rdx),%edx
ffffffff804b9bf0:        0 	85 d2                	test   %edx,%edx
ffffffff804b9bf2:        0 	74 24                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bf4:        0 	3b 54 24 40          	cmp    0x40(%rsp),%edx
ffffffff804b9bf8:        0 	74 1e                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bfa:        0 	48 89 ca             	mov    %rcx,%rdx
ffffffff804b9bfd:        0 	48 85 d2             	test   %rdx,%rdx
ffffffff804b9c00:        0 	74 12                	je     ffffffff804b9c14 <__inet_lookup_established+0x102>
ffffffff804b9c02:        0 	48 8d 42 f8          	lea    -0x8(%rdx),%rax
ffffffff804b9c06:        0 	48 8b 0a             	mov    (%rdx),%rcx
ffffffff804b9c09:        0 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9c0d:        0 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9c10:        0 	75 e8                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9c12:        0 	eb c3                	jmp    ffffffff804b9bd7 <__inet_lookup_established+0xc5>
ffffffff804b9c14:        0 	31 c0                	xor    %eax,%eax
ffffffff804b9c16:        0 	eb 04                	jmp    ffffffff804b9c1c <__inet_lookup_established+0x10a>
ffffffff804b9c18:      441 	f0 ff 40 28          	lock incl 0x28(%rax)
ffffffff804b9c1c:     1442 	f0 41 ff 04 24       	lock incl (%r12)
ffffffff804b9c21:      476 	41 5b                	pop    %r11
ffffffff804b9c23:        1 	5b                   	pop    %rbx
ffffffff804b9c24:        0 	5d                   	pop    %rbp
ffffffff804b9c25:      475 	41 5c                	pop    %r12
ffffffff804b9c27:        0 	41 5d                	pop    %r13
ffffffff804b9c29:        1 	41 5e                	pop    %r14
ffffffff804b9c2b:      494 	41 5f                	pop    %r15
ffffffff804b9c2d:        0 	c3                   	retq   
ffffffff804b9c2e:        0 	90                   	nop    
ffffffff804b9c2f:        0 	90                   	nop    

80% of the overhead comes from cachemisses here:

ffffffff804b9bc6:       78 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9bca:        4 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9bcd:      685 	75 e8                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9bcf:   139502 	eb bd                	jmp    ffffffff804b9b8e <__inet_lookup_established+0x7c>

corresponding to:

(gdb) list *0xffffffff804b9bc6
0xffffffff804b9bc6 is in __inet_lookup_established (net/ipv4/inet_hashtables.c:237).
232		rwlock_t *lock = inet_ehash_lockp(hashinfo, hash);
233	
234		prefetch(head->chain.first);
235		read_lock(lock);
236		sk_for_each(sk, node, &head->chain) {
237			if (INET_MATCH(sk, net, hash, acookie,
238						saddr, daddr, ports, dif))
239				goto hit; /* You sunk my battleship! */
240		}
241	

Seeing the first hard cachemiss on hash lookups is a familiar and 
partly expected pattern - it is the first thing that touches 
cache-cold data structures.

Seeing 1.4% of the totaly tbench overhead go into this single 
cachemiss is a bit surprising to me though: tbench works via 
long-lived connections (TCP establish costs and nowhere to be seen in 
the profiles) so the socket hash should be relatively stable and 
read-mostly on most CPUs in theory. The CPUs here have 2MB of L2 cache 
per socket.

Could we be somehow dirtying these cachelines perhaps, causing 
unnecessary cachemisses in hash lookups? Is the hash linkage portion 
of the socket data structure frequently dirtied? Padding that to 64 
bytes (or next to 64 bytes worth of read-mostly fields) could perhaps 
give us a +1.7% tbench speedup.

	Ingo

WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>
To: Linus Torvalds
	<torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Cc: Eric Dumazet <dada1-fPLkHRcR87vqlBn2x/YWAg@public.gmane.org>,
	David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	rjw-KKrjLPT3xs0@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	cl-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	efault-Mmb7MZpHnFY@public.gmane.org,
	a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org,
	Stephen Hemminger
	<shemminger-ZtmgI6mnKB3QT0dZR+AlfA@public.gmane.org>
Subject: __inet_lookup_established(): Re: [Bug #11308] tbench regression on each kernel release from 2.6.22 -&gt; 2.6.28
Date: Mon, 17 Nov 2008 22:35:20 +0100	[thread overview]
Message-ID: <20081117213520.GI12020@elte.hu> (raw)
In-Reply-To: <20081117184951.GA5585-X9Un+BFzKDI@public.gmane.org>


* Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org> wrote:

> 100.000000 total
> ................
>   1.673249 __inet_lookup_established

                      hits (total: 167324)
                 .........
ffffffff804b9b12:      446 <__inet_lookup_established>:
ffffffff804b9b12:      446 	41 57                	push   %r15
ffffffff804b9b14:     4810 	89 d0                	mov    %edx,%eax
ffffffff804b9b16:        0 	0f b7 c9             	movzwl %cx,%ecx
ffffffff804b9b19:        0 	41 56                	push   %r14
ffffffff804b9b1b:      456 	41 55                	push   %r13
ffffffff804b9b1d:        0 	41 54                	push   %r12
ffffffff804b9b1f:        0 	55                   	push   %rbp
ffffffff804b9b20:      427 	53                   	push   %rbx
ffffffff804b9b21:        4 	48 89 f3             	mov    %rsi,%rbx
ffffffff804b9b24:        2 	44 89 c6             	mov    %r8d,%esi
ffffffff804b9b27:      504 	41 89 c8             	mov    %ecx,%r8d
ffffffff804b9b2a:        1 	49 89 f7             	mov    %rsi,%r15
ffffffff804b9b2d:        1 	48 83 ec 08          	sub    $0x8,%rsp
ffffffff804b9b31:      462 	49 c1 e7 20          	shl    $0x20,%r15
ffffffff804b9b35:        0 	48 89 3c 24          	mov    %rdi,(%rsp)
ffffffff804b9b39:      507 	89 d7                	mov    %edx,%edi
ffffffff804b9b3b:       38 	41 0f b7 d1          	movzwl %r9w,%edx
ffffffff804b9b3f:        0 	41 89 d6             	mov    %edx,%r14d
ffffffff804b9b42:      863 	49 09 c7             	or     %rax,%r15
ffffffff804b9b45:       24 	41 c1 e6 10          	shl    $0x10,%r14d
ffffffff804b9b49:        0 	41 09 ce             	or     %ecx,%r14d
ffffffff804b9b4c:      479 	89 f9                	mov    %edi,%ecx
ffffffff804b9b4e:        8 	48 8b 3c 24          	mov    (%rsp),%rdi
ffffffff804b9b52:        0 	e8 cc f4 ff ff       	callq  ffffffff804b9023 <inet_ehashfn>
ffffffff804b9b57:      413 	48 89 df             	mov    %rbx,%rdi
ffffffff804b9b5a:      122 	41 89 c5             	mov    %eax,%r13d
ffffffff804b9b5d:        0 	89 c6                	mov    %eax,%esi
ffffffff804b9b5f:      635 	e8 3e f5 ff ff       	callq  ffffffff804b90a2 <inet_ehash_bucket>
ffffffff804b9b64:      511 	48 89 c5             	mov    %rax,%rbp
ffffffff804b9b67:        6 	44 89 e8             	mov    %r13d,%eax
ffffffff804b9b6a:        0 	23 43 14             	and    0x14(%rbx),%eax
ffffffff804b9b6d:      497 	4c 8d 24 85 00 00 00 	lea    0x0(,%rax,4),%r12
ffffffff804b9b74:        0 	00 
ffffffff804b9b75:        1 	4c 03 63 08          	add    0x8(%rbx),%r12
ffffffff804b9b79:        0 	48 8b 45 00          	mov    0x0(%rbp),%rax
ffffffff804b9b7d:      470 	0f 18 08             	prefetcht0 (%rax)
ffffffff804b9b80:        0 	4c 89 e7             	mov    %r12,%rdi
ffffffff804b9b83:     1089 	e8 32 cd 05 00       	callq  ffffffff805168ba <_read_lock>
ffffffff804b9b88:     6752 	48 8b 55 00          	mov    0x0(%rbp),%rdx
ffffffff804b9b8c:      598 	eb 2c                	jmp    ffffffff804b9bba <__inet_lookup_established+0xa8>
ffffffff804b9b8e:      447 	48 81 3c 24 d0 15 ab 	cmpq   $0xffffffff80ab15d0,(%rsp)
ffffffff804b9b95:        0 	80 
ffffffff804b9b96:     1119 	75 1f                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9b98:       21 	4c 39 b8 30 02 00 00 	cmp    %r15,0x230(%rax)
ffffffff804b9b9f:        0 	75 16                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9ba1:      492 	44 39 b0 38 02 00 00 	cmp    %r14d,0x238(%rax)
ffffffff804b9ba8:        0 	75 0d                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9baa:        0 	8b 52 fc             	mov    -0x4(%rdx),%edx
ffffffff804b9bad:      451 	85 d2                	test   %edx,%edx
ffffffff804b9baf:        0 	74 67                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bb1:        0 	3b 54 24 40          	cmp    0x40(%rsp),%edx
ffffffff804b9bb5:        0 	74 61                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bb7:        0 	48 89 ca             	mov    %rcx,%rdx
ffffffff804b9bba:      402 	48 85 d2             	test   %rdx,%rdx
ffffffff804b9bbd:     1006 	74 12                	je     ffffffff804b9bd1 <__inet_lookup_established+0xbf>
ffffffff804b9bbf:        0 	48 8d 42 f8          	lea    -0x8(%rdx),%rax
ffffffff804b9bc3:      821 	48 8b 0a             	mov    (%rdx),%rcx
ffffffff804b9bc6:       78 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9bca:        4 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9bcd:      685 	75 e8                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9bcf:   139502 	eb bd                	jmp    ffffffff804b9b8e <__inet_lookup_established+0x7c>
ffffffff804b9bd1:        0 	48 8b 55 08          	mov    0x8(%rbp),%rdx
ffffffff804b9bd5:        0 	eb 26                	jmp    ffffffff804b9bfd <__inet_lookup_established+0xeb>
ffffffff804b9bd7:        0 	48 81 3c 24 d0 15 ab 	cmpq   $0xffffffff80ab15d0,(%rsp)
ffffffff804b9bde:        0 	80 
ffffffff804b9bdf:        0 	75 19                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9be1:        0 	4c 39 78 40          	cmp    %r15,0x40(%rax)
ffffffff804b9be5:        0 	75 13                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9be7:        0 	44 39 70 48          	cmp    %r14d,0x48(%rax)
ffffffff804b9beb:        0 	75 0d                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9bed:        0 	8b 52 fc             	mov    -0x4(%rdx),%edx
ffffffff804b9bf0:        0 	85 d2                	test   %edx,%edx
ffffffff804b9bf2:        0 	74 24                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bf4:        0 	3b 54 24 40          	cmp    0x40(%rsp),%edx
ffffffff804b9bf8:        0 	74 1e                	je     ffffffff804b9c18 <__inet_lookup_established+0x106>
ffffffff804b9bfa:        0 	48 89 ca             	mov    %rcx,%rdx
ffffffff804b9bfd:        0 	48 85 d2             	test   %rdx,%rdx
ffffffff804b9c00:        0 	74 12                	je     ffffffff804b9c14 <__inet_lookup_established+0x102>
ffffffff804b9c02:        0 	48 8d 42 f8          	lea    -0x8(%rdx),%rax
ffffffff804b9c06:        0 	48 8b 0a             	mov    (%rdx),%rcx
ffffffff804b9c09:        0 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9c0d:        0 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9c10:        0 	75 e8                	jne    ffffffff804b9bfa <__inet_lookup_established+0xe8>
ffffffff804b9c12:        0 	eb c3                	jmp    ffffffff804b9bd7 <__inet_lookup_established+0xc5>
ffffffff804b9c14:        0 	31 c0                	xor    %eax,%eax
ffffffff804b9c16:        0 	eb 04                	jmp    ffffffff804b9c1c <__inet_lookup_established+0x10a>
ffffffff804b9c18:      441 	f0 ff 40 28          	lock incl 0x28(%rax)
ffffffff804b9c1c:     1442 	f0 41 ff 04 24       	lock incl (%r12)
ffffffff804b9c21:      476 	41 5b                	pop    %r11
ffffffff804b9c23:        1 	5b                   	pop    %rbx
ffffffff804b9c24:        0 	5d                   	pop    %rbp
ffffffff804b9c25:      475 	41 5c                	pop    %r12
ffffffff804b9c27:        0 	41 5d                	pop    %r13
ffffffff804b9c29:        1 	41 5e                	pop    %r14
ffffffff804b9c2b:      494 	41 5f                	pop    %r15
ffffffff804b9c2d:        0 	c3                   	retq   
ffffffff804b9c2e:        0 	90                   	nop    
ffffffff804b9c2f:        0 	90                   	nop    

80% of the overhead comes from cachemisses here:

ffffffff804b9bc6:       78 	44 39 68 2c          	cmp    %r13d,0x2c(%rax)
ffffffff804b9bca:        4 	0f 18 09             	prefetcht0 (%rcx)
ffffffff804b9bcd:      685 	75 e8                	jne    ffffffff804b9bb7 <__inet_lookup_established+0xa5>
ffffffff804b9bcf:   139502 	eb bd                	jmp    ffffffff804b9b8e <__inet_lookup_established+0x7c>

corresponding to:

(gdb) list *0xffffffff804b9bc6
0xffffffff804b9bc6 is in __inet_lookup_established (net/ipv4/inet_hashtables.c:237).
232		rwlock_t *lock = inet_ehash_lockp(hashinfo, hash);
233	
234		prefetch(head->chain.first);
235		read_lock(lock);
236		sk_for_each(sk, node, &head->chain) {
237			if (INET_MATCH(sk, net, hash, acookie,
238						saddr, daddr, ports, dif))
239				goto hit; /* You sunk my battleship! */
240		}
241	

Seeing the first hard cachemiss on hash lookups is a familiar and 
partly expected pattern - it is the first thing that touches 
cache-cold data structures.

Seeing 1.4% of the totaly tbench overhead go into this single 
cachemiss is a bit surprising to me though: tbench works via 
long-lived connections (TCP establish costs and nowhere to be seen in 
the profiles) so the socket hash should be relatively stable and 
read-mostly on most CPUs in theory. The CPUs here have 2MB of L2 cache 
per socket.

Could we be somehow dirtying these cachelines perhaps, causing 
unnecessary cachemisses in hash lookups? Is the hash linkage portion 
of the socket data structure frequently dirtied? Padding that to 64 
bytes (or next to 64 bytes worth of read-mostly fields) could perhaps 
give us a +1.7% tbench speedup.

	Ingo

  parent reply	other threads:[~2008-11-17 21:36 UTC|newest]

Thread overview: 349+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-16 17:38 2.6.28-rc5: Reported regressions 2.6.26 -> 2.6.27 Rafael J. Wysocki
2008-11-16 17:38 ` Rafael J. Wysocki
2008-11-16 17:38 ` [Bug #11207] VolanoMark regression with 2.6.27-rc1 Rafael J. Wysocki
2008-11-16 17:38   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11215] INFO: possible recursive locking detected ps2_command Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -&gt; 2.6.28 Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-17  9:06   ` Ingo Molnar
2008-11-17  9:06     ` Ingo Molnar
2008-11-17  9:14     ` David Miller
2008-11-17  9:14       ` David Miller
2008-11-17 11:01       ` Ingo Molnar
2008-11-17 11:01         ` Ingo Molnar
2008-11-17 11:20         ` Eric Dumazet
2008-11-17 16:11           ` Ingo Molnar
2008-11-17 16:11             ` Ingo Molnar
2008-11-17 16:35             ` Eric Dumazet
2008-11-17 16:35               ` Eric Dumazet
2008-11-17 17:08               ` Ingo Molnar
2008-11-17 17:08                 ` Ingo Molnar
2008-11-17 17:25                 ` Ingo Molnar
2008-11-17 17:25                   ` Ingo Molnar
2008-11-17 17:33                   ` Eric Dumazet
2008-11-17 17:33                     ` Eric Dumazet
2008-11-17 17:38                     ` Linus Torvalds
2008-11-17 17:38                       ` Linus Torvalds
2008-11-17 17:42                       ` Eric Dumazet
2008-11-17 17:42                         ` Eric Dumazet
2008-11-17 18:23                       ` Ingo Molnar
2008-11-17 18:23                         ` Ingo Molnar
2008-11-17 18:33                         ` Linus Torvalds
2008-11-17 18:33                           ` Linus Torvalds
2008-11-17 18:49                         ` Ingo Molnar
2008-11-17 18:49                           ` Ingo Molnar
2008-11-17 19:30                           ` Eric Dumazet
2008-11-17 19:30                             ` Eric Dumazet
2008-11-17 19:39                           ` David Miller
2008-11-17 19:39                             ` David Miller
2008-11-17 19:43                             ` Eric Dumazet
2008-11-17 19:43                               ` Eric Dumazet
2008-11-17 19:55                             ` Linus Torvalds
2008-11-17 19:55                               ` Linus Torvalds
2008-11-17 20:16                               ` David Miller
2008-11-17 20:16                                 ` David Miller
2008-11-17 20:30                                 ` Linus Torvalds
2008-11-17 20:30                                   ` Linus Torvalds
2008-11-17 20:58                                   ` David Miller
2008-11-17 20:58                                     ` David Miller
2008-11-18  9:44                                     ` Nick Piggin
2008-11-18  9:44                                       ` Nick Piggin
2008-11-18 15:58                                       ` Linus Torvalds
2008-11-18 15:58                                         ` Linus Torvalds
2008-11-19  4:31                                         ` Nick Piggin
2008-11-20  9:14                                         ` David Miller
2008-11-20  9:14                                           ` David Miller
2008-11-20  9:06                                       ` David Miller
2008-11-20  9:06                                         ` David Miller
2008-11-18 12:29                             ` Mike Galbraith
2008-11-18 12:29                               ` Mike Galbraith
2008-11-17 19:57                           ` Ingo Molnar
2008-11-17 19:57                             ` Ingo Molnar
2008-11-17 20:20                           ` (avc_has_perm_noaudit()) " Ingo Molnar
2008-11-17 20:20                             ` Ingo Molnar
2008-11-17 20:32                           ` ip_queue_xmit(): " Ingo Molnar
2008-11-17 20:32                             ` Ingo Molnar
2008-11-17 20:57                             ` Eric Dumazet
2008-11-17 20:57                               ` Eric Dumazet
2008-11-18  9:12                             ` Nick Piggin
2008-11-17 20:47                           ` Ingo Molnar
2008-11-17 20:47                             ` Ingo Molnar
2008-11-17 20:56                             ` Eric Dumazet
2008-11-17 20:56                               ` Eric Dumazet
2008-11-17 20:55                           ` skb_release_head_state(): " Ingo Molnar
2008-11-17 20:55                             ` Ingo Molnar
2008-11-17 21:01                             ` David Miller
2008-11-17 21:01                               ` David Miller
2008-11-17 21:04                             ` Eric Dumazet
2008-11-17 21:04                               ` Eric Dumazet
2008-11-17 21:34                             ` Linus Torvalds
2008-11-17 21:34                               ` Linus Torvalds
2008-11-17 21:38                               ` Ingo Molnar
2008-11-17 21:38                                 ` Ingo Molnar
2008-11-17 21:09                           ` tcp_ack(): " Ingo Molnar
2008-11-17 21:09                             ` Ingo Molnar
2008-11-17 21:19                           ` tcp_recvmsg(): " Ingo Molnar
2008-11-17 21:19                             ` Ingo Molnar
2008-11-17 21:26                           ` eth_type_trans(): " Ingo Molnar
2008-11-17 21:26                             ` Ingo Molnar
2008-11-17 21:40                             ` Eric Dumazet
2008-11-17 21:40                               ` Eric Dumazet
2008-11-17 23:41                               ` Eric Dumazet
2008-11-17 23:41                                 ` Eric Dumazet
2008-11-18  0:01                                 ` Linus Torvalds
2008-11-18  0:01                                   ` Linus Torvalds
2008-11-18  8:35                                   ` Eric Dumazet
2008-11-17 21:52                             ` Linus Torvalds
2008-11-17 21:52                               ` Linus Torvalds
2008-11-18  5:16                             ` David Miller
2008-11-18  5:16                               ` David Miller
2008-11-18  5:35                               ` Eric Dumazet
2008-11-18  7:00                                 ` David Miller
2008-11-18  7:00                                   ` David Miller
2008-11-18  8:30                               ` Ingo Molnar
2008-11-18  8:30                                 ` Ingo Molnar
2008-11-18  8:49                                 ` Eric Dumazet
2008-11-18  8:49                                   ` Eric Dumazet
2008-11-17 21:35                           ` Ingo Molnar [this message]
2008-11-17 21:35                             ` __inet_lookup_established(): " Ingo Molnar
2008-11-17 22:14                             ` Eric Dumazet
2008-11-17 22:14                               ` Eric Dumazet
2008-11-17 21:59                           ` system_call() - " Ingo Molnar
2008-11-17 21:59                             ` Ingo Molnar
2008-11-17 22:09                             ` Linus Torvalds
2008-11-17 22:09                               ` Linus Torvalds
2008-11-17 22:08                           ` Ingo Molnar
2008-11-17 22:15                             ` Eric Dumazet
2008-11-17 22:15                               ` Eric Dumazet
2008-11-17 22:26                               ` Ingo Molnar
2008-11-17 22:26                                 ` Ingo Molnar
2008-11-17 22:39                                 ` Eric Dumazet
2008-11-17 22:39                                   ` Eric Dumazet
2008-11-18  5:23                               ` David Miller
2008-11-18  5:23                                 ` David Miller
2008-11-18  8:45                                 ` Ingo Molnar
2008-11-18  8:45                                   ` Ingo Molnar
2008-11-17 22:14                           ` tcp_transmit_skb() - " Ingo Molnar
2008-11-17 22:14                             ` Ingo Molnar
2008-11-17 22:19                           ` Ingo Molnar
2008-11-17 22:19                             ` Ingo Molnar
2008-11-17 19:36                 ` David Miller
2008-11-17 19:36                   ` David Miller
2008-11-17 19:31             ` David Miller
2008-11-17 19:31               ` David Miller
2008-11-17 19:47               ` Linus Torvalds
2008-11-17 19:47                 ` Linus Torvalds
2008-11-17 19:51                 ` David Miller
2008-11-17 19:51                   ` David Miller
2008-11-17 19:53                 ` Ingo Molnar
2008-11-17 19:53                   ` Ingo Molnar
2008-11-17 22:47               ` Ingo Molnar
2008-11-17 22:47                 ` Ingo Molnar
2008-11-17 19:21         ` David Miller
2008-11-17 19:21           ` David Miller
2008-11-17 19:48           ` Linus Torvalds
2008-11-17 19:48             ` Linus Torvalds
2008-11-17 19:52             ` David Miller
2008-11-17 19:52               ` David Miller
2008-11-17 19:57               ` Linus Torvalds
2008-11-17 19:57                 ` Linus Torvalds
2008-11-17 20:18                 ` David Miller
2008-11-17 20:18                   ` David Miller
2008-11-19 19:43     ` Christoph Lameter
2008-11-19 19:43       ` Christoph Lameter
2008-11-19 20:14       ` Ingo Molnar
2008-11-19 20:14         ` Ingo Molnar
2008-11-20 23:52       ` Christoph Lameter
2008-11-20 23:52         ` Christoph Lameter
2008-11-21  8:30         ` Ingo Molnar
2008-11-21  8:30           ` Ingo Molnar
2008-11-21  8:51           ` Eric Dumazet
2008-11-21  8:51             ` Eric Dumazet
2008-11-21  9:05             ` David Miller
2008-11-21  9:05               ` David Miller
2008-11-21 12:51               ` Eric Dumazet
2008-11-21 12:51                 ` Eric Dumazet
2008-11-21 15:13                 ` [PATCH] fs: pipe/sockets/anon dentries should not have a parent Eric Dumazet
2008-11-21 15:13                   ` Eric Dumazet
2008-11-21 15:21                   ` Ingo Molnar
2008-11-21 15:21                     ` Ingo Molnar
2008-11-21 15:28                     ` Eric Dumazet
2008-11-21 15:28                       ` Eric Dumazet
2008-11-21 15:34                       ` Ingo Molnar
2008-11-21 15:34                         ` Ingo Molnar
2008-11-26 23:27                         ` [PATCH 0/6] fs: Scalability of sockets/pipes allocation/deallocation on SMP Eric Dumazet
2008-11-27  1:37                           ` Christoph Lameter
2008-11-27  1:37                             ` Christoph Lameter
2008-11-27  6:27                             ` Eric Dumazet
2008-11-27  6:27                               ` Eric Dumazet
2008-11-27 14:44                               ` Christoph Lameter
2008-11-27 14:44                                 ` Christoph Lameter
2008-11-27  9:39                           ` Christoph Hellwig
2008-11-28 18:03                           ` Ingo Molnar
2008-11-28 18:47                             ` Peter Zijlstra
2008-11-28 18:47                               ` Peter Zijlstra
2008-11-29  6:38                               ` Christoph Hellwig
2008-11-29  6:38                                 ` Christoph Hellwig
2008-11-29  8:07                                 ` Eric Dumazet
2008-11-29  8:07                                   ` Eric Dumazet
2008-11-29  8:43                           ` [PATCH v2 0/5] " Eric Dumazet
2008-11-29  8:43                             ` Eric Dumazet
2008-12-11 22:38                             ` [PATCH v3 0/7] " Eric Dumazet
2008-12-11 22:38                               ` Eric Dumazet
2008-12-11 22:38                             ` [PATCH v3 1/7] fs: Use a percpu_counter to track nr_dentry Eric Dumazet
2008-12-11 22:38                               ` Eric Dumazet
2007-07-24  1:24                               ` Nick Piggin
2007-07-24  1:24                                 ` Nick Piggin
2008-12-16 21:04                               ` Paul E. McKenney
2008-12-16 21:04                                 ` Paul E. McKenney
2008-12-11 22:39                             ` [PATCH v3 2/7] fs: Use a percpu_counter to track nr_inodes Eric Dumazet
2008-12-11 22:39                               ` Eric Dumazet
2007-07-24  1:30                               ` Nick Piggin
2007-07-24  1:30                                 ` Nick Piggin
2008-12-12  5:11                                 ` Eric Dumazet
2008-12-12  5:11                                   ` Eric Dumazet
2008-12-16 21:10                               ` Paul E. McKenney
2008-12-16 21:10                                 ` Paul E. McKenney
2008-12-11 22:39                             ` [PATCH v3 3/7] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-12-11 22:39                               ` Eric Dumazet
2007-07-24  1:34                               ` Nick Piggin
2007-07-24  1:34                                 ` Nick Piggin
2008-12-16 21:26                               ` Paul E. McKenney
2008-12-16 21:26                                 ` Paul E. McKenney
2008-12-11 22:39                             ` [PATCH v3 4/7] fs: Introduce SINGLE dentries for pipes, socket, anon fd Eric Dumazet
2008-12-11 22:39                               ` Eric Dumazet
2008-12-16 21:40                               ` Paul E. McKenney
2008-12-16 21:40                                 ` Paul E. McKenney
2008-12-11 22:40                             ` [PATCH v3 5/7] fs: new_inode_single() and iput_single() Eric Dumazet
2008-12-11 22:40                               ` Eric Dumazet
2008-12-16 21:41                               ` Paul E. McKenney
2008-12-16 21:41                                 ` Paul E. McKenney
2008-12-11 22:40                             ` [PATCH v3 6/7] fs: struct file move from call_rcu() to SLAB_DESTROY_BY_RCU Eric Dumazet
2008-12-11 22:40                               ` Eric Dumazet
2007-07-24  1:13                               ` Nick Piggin
2007-07-24  1:13                                 ` Nick Piggin
2007-07-24  1:13                                 ` Nick Piggin
2008-12-12  2:50                                 ` Nick Piggin
2008-12-12  2:50                                   ` Nick Piggin
2008-12-12  4:45                                 ` Eric Dumazet
2008-12-12  4:45                                   ` Eric Dumazet
2008-12-12 16:48                                   ` Eric Dumazet
2008-12-12 16:48                                     ` Eric Dumazet
2008-12-13  2:07                                     ` Christoph Lameter
2008-12-13  2:07                                       ` Christoph Lameter
2008-12-17 20:25                                       ` Eric Dumazet
2008-12-17 20:25                                         ` Eric Dumazet
2008-12-13  1:41                                   ` Christoph Lameter
2008-12-13  1:41                                     ` Christoph Lameter
2008-12-11 22:41                             ` [PATCH v3 7/7] fs: MS_NOREFCOUNT Eric Dumazet
2008-12-11 22:41                               ` Eric Dumazet
2008-11-29  8:43                           ` [PATCH v2 1/5] fs: Use a percpu_counter to track nr_dentry Eric Dumazet
2008-11-29  8:43                             ` Eric Dumazet
2008-11-29  8:43                           ` [PATCH v2 2/5] fs: Use a percpu_counter to track nr_inodes Eric Dumazet
2008-11-29  8:43                             ` Eric Dumazet
2008-11-29  8:44                           ` [PATCH v2 3/5] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-11-29  8:44                             ` Eric Dumazet
2008-11-29  8:44                           ` [PATCH v2 4/5] fs: Introduce SINGLE dentries for pipes, socket, anon fd Eric Dumazet
2008-11-29  8:44                             ` Eric Dumazet
2008-11-29 10:38                             ` Jörn Engel
2008-11-29 10:38                               ` Jörn Engel
2008-11-29 10:38                               ` Jörn Engel
2008-11-29 11:14                               ` Eric Dumazet
2008-11-29 11:14                                 ` Eric Dumazet
2008-11-29  8:45                           ` [PATCH v2 5/5] fs: new_inode_single() and iput_single() Eric Dumazet
2008-11-29  8:45                             ` Eric Dumazet
2008-11-29 11:14                             ` Jörn Engel
2008-11-29 11:14                               ` Jörn Engel
2008-11-29 11:14                               ` Jörn Engel
2008-11-26 23:30                         ` [PATCH 1/6] fs: Introduce a per_cpu nr_dentry Eric Dumazet
2008-11-26 23:30                           ` Eric Dumazet
2008-11-27  9:41                           ` Christoph Hellwig
2008-11-27  9:41                             ` Christoph Hellwig
2008-11-26 23:32                         ` [PATCH 3/6] fs: Introduce a per_cpu last_ino allocator Eric Dumazet
2008-11-27  9:46                           ` Christoph Hellwig
2008-11-27  9:46                             ` Christoph Hellwig
2008-11-26 23:32                         ` [PATCH 4/6] fs: Introduce a per_cpu nr_inodes Eric Dumazet
2008-11-26 23:32                           ` Eric Dumazet
2008-11-27  9:32                           ` Peter Zijlstra
2008-11-27  9:39                             ` Peter Zijlstra
2008-11-27  9:39                               ` Peter Zijlstra
2008-11-27  9:48                               ` Christoph Hellwig
2008-11-27 10:01                             ` Eric Dumazet
2008-11-27 10:01                               ` Eric Dumazet
2008-11-27 10:07                             ` Andi Kleen
2008-11-27 14:46                             ` Christoph Lameter
2008-11-26 23:32                         ` [PATCH 5/6] fs: Introduce special inodes Eric Dumazet
2008-11-26 23:32                           ` Eric Dumazet
2008-11-27  8:20                           ` David Miller
2008-11-27  8:20                             ` David Miller
2008-11-26 23:32                         ` [PATCH 6/6] fs: Introduce kern_mount_special() to mount special vfs Eric Dumazet
2008-11-27  8:21                           ` David Miller
2008-11-27  8:21                             ` David Miller
2008-11-27  9:53                           ` Christoph Hellwig
2008-11-27 10:04                             ` Eric Dumazet
2008-11-27 10:04                               ` Eric Dumazet
2008-11-27 10:10                               ` Christoph Hellwig
2008-11-27 10:10                                 ` Christoph Hellwig
2008-11-28  9:26                           ` Al Viro
2008-11-28  9:26                             ` Al Viro
2008-11-28  9:34                             ` Al Viro
2008-11-28  9:34                               ` Al Viro
2008-11-28 18:02                             ` Ingo Molnar
2008-11-28 18:02                               ` Ingo Molnar
2008-11-28 18:58                               ` Ingo Molnar
2008-11-28 22:20                               ` Eric Dumazet
2008-11-28 22:20                                 ` Eric Dumazet
2008-11-28 22:37                             ` Eric Dumazet
2008-11-28 22:43                               ` Eric Dumazet
2008-11-21 15:36                   ` [PATCH] fs: pipe/sockets/anon dentries should not have a parent Christoph Hellwig
2008-11-21 17:58                     ` [PATCH] fs: pipe/sockets/anon dentries should have themselves as parent Eric Dumazet
2008-11-21 18:43                       ` Matthew Wilcox
2008-11-21 18:43                         ` Matthew Wilcox
2008-11-23  3:53                         ` Eric Dumazet
2008-11-21  9:18             ` [Bug #11308] tbench regression on each kernel release from 2.6.22 -&gt; 2.6.28 Ingo Molnar
2008-11-21  9:18               ` Ingo Molnar
2008-11-21  9:03           ` David Miller
2008-11-21  9:03             ` David Miller
2008-11-21 16:11           ` Christoph Lameter
2008-11-21 16:11             ` Christoph Lameter
2008-11-21 18:06             ` Christoph Lameter
2008-11-21 18:06               ` Christoph Lameter
2008-11-21 18:16               ` Eric Dumazet
2008-11-21 18:16                 ` Eric Dumazet
2008-11-21 18:19                 ` Eric Dumazet
2008-11-21 18:19                   ` Eric Dumazet
2008-11-16 17:40 ` [Bug #11664] acpi errors and random freeze on sony vaio sr Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11698] 2.6.27-rc7, freezes with &gt; 1 s2ram cycle Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11404] BUG: in 2.6.23-rc3-git7 in do_cciss_intr Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-17 16:19   ` Randy Dunlap
2008-11-16 17:40 ` [Bug #11569] Panic stop CPUs regression Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11543] kernel panic: softlockup in tick_periodic() ??? Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11836] Scheduler on C2D CPU and latest 2.6.27 kernel Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11805] mounting XFS produces a segfault Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-17 14:44   ` Christoph Hellwig
2008-11-17 14:44     ` Christoph Hellwig
2008-11-16 17:40 ` [Bug #11795] ks959-sir dongle no longer works under 2.6.27 (REGRESSION) Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11865] WOL for E100 Doesn't Work Anymore Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11843] usb hdd problems with 2.6.27.2 Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 21:37   ` Luciano Rocha
2008-11-16 17:40 ` [Bug #11876] RCU hang on cpu re-hotplug with 2.6.27rc8 Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:40 ` [Bug #11886] without serial console system doesn't poweroff Rafael J. Wysocki
2008-11-16 17:40   ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #12039] Regression: USB/DVB 2.6.26.8 --&gt; 2.6.27.6 Rafael J. Wysocki
2008-11-16 17:41   ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #11983] iwlagn: wrong command queue 31, command id 0x0 Rafael J. Wysocki
2008-11-16 17:41   ` Rafael J. Wysocki
2008-11-16 17:41 ` [Bug #12048] Regression in bonding between 2.6.26.8 and 2.6.27.6 Rafael J. Wysocki
2008-11-16 17:41   ` Rafael J. Wysocki

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=20081117213520.GI12020@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=cl@linux-foundation.org \
    --cc=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=efault@gmx.de \
    --cc=kernel-testers@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=shemminger@vyatta.com \
    --cc=torvalds@linux-foundation.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.