Thread (43 messages) flat view 43 messages, 8 authors, 2016-12-08

Re: [PATCH] net/udp: do not touch skb->peeked unless really needed

From: Hannes Frederic Sowa <hidden>
Date: 2016-12-07 17:37:48

On Wed, Dec 7, 2016, at 18:32, Eric Dumazet wrote:
On Wed, 2016-12-07 at 17:09 +0000, David Laight wrote:
quoted
From: Paolo Abeni
quoted
Sent: 06 December 2016 17:08
...
quoted
@@ -79,6 +82,9 @@ struct udp_sock {
 	int			(*gro_complete)(struct sock *sk,
 						struct sk_buff *skb,
 						int nhoff);
+
+	/* since we are prone to drops, avoid dirtying any sk cacheline */
+	atomic_t		drops ____cacheline_aligned_in_smp;
 };
Isn't that likely to create a large hole on systems with large cache lines.
(Same as any other use of ____cacheline_aligned_in_smp.)
Yes, I would like to avoid that, unless we come to the conclusion it is
absolutely needed.

I feel that we could simply use a pointer, and allocate memory on
demand, since many sockets do not ever experience a drop.

The pointer could stay in a read mostly section.

We even could use per cpu or node counter for some heavy drop cases. 
I had the same idea while discussing that with Paolo, merely using an
*atomic_t = kmalloc(sizeof(atomic_t)) out of band of the socket.

My fear was that those could be aggregated by the slab cache into one
cache line, causing even more heating on cachelines.

Bye,
Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help