Thread (22 messages) 22 messages, 4 authors, 2008-12-18

Re: [RFC] Could we avoid touching dst->refcount in some cases ?

From: Eric Dumazet <hidden>
Date: 2008-11-25 04:43:41

David Miller a écrit :
From: Eric Dumazet <redacted>
Date: Mon, 24 Nov 2008 11:14:29 +0100
quoted
So maybe we could make ip_append_data() (or its callers) a
litle bit smarter, avoiding increment/decrement if possible.
These ideas are interesting but hard to make work.

I think the receive path has more chance of getting gains
from this, to be honest.

One third (effectively) of TCP stream packets are ACKs and
freed immediately.  This means that the looked up route does
not escape the packet receive path.  So we could elide the
counter increment in that case.

In fact, once we queue even TCP data, there is no need for
that cached skb->dst route any longer.

So pretty much all TCP packets could avoid the dst refcounting
on receive.
Very interesting. So we could try the following path :

1) First try to release dst when queueing skb to various queues
(UDP, TCP, ...) while its hot. Reader wont have to release it
while its cold.

2) Check if we can handle the input path without any refcount
   dirtying ?

To make the transition easy, we could use a bit on skb to mark
dst being not refcounted (ie no dst_release() should be done on it)

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