From: Eric Dumazet <dada1@cosmosbay.com>
To: David Miller <davem@davemloft.net>
Cc: andi@firstfloor.org, netdev@vger.kernel.org
Subject: Re: [PATCH] net: release skb->dst in sock_queue_rcv_skb()
Date: Wed, 26 Nov 2008 08:39:30 +0100 [thread overview]
Message-ID: <492CFD32.7020109@cosmosbay.com> (raw)
In-Reply-To: <20081125.180404.157859705.davem@davemloft.net>
David Miller a écrit :
> From: Eric Dumazet <dada1@cosmosbay.com>
> Date: Wed, 26 Nov 2008 01:00:30 +0100
>
>> In the meantime, what do you think of the following patch ?
>>
>> [PATCH] net: release skb->dst in sock_queue_rcv_skb()
>>
>> When queuing a skb to sk->sk_receive_queue, we can release its dst, not
>> anymore needed.
>> Since current cpu did the dst_hold(), refcount is probably still hot
>> int this cpu caches.
>>
>> This avoids readers to access the original dst to decrement its refcount,
>> possibly a long time after packet reception. This should speedup UDP
>> and RAW receive path.
>>
>> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
>
> I guess the idea is that if we release quickly we'll not have
> to reget the cacheline in owned state.
Yes, this is the idea.
>
> I wonder if this might actually slightly hurt loads like tbench where
> we are banging on the refcnt constantly on every cpu anyways.
Yes, the only way to reduce the load on this case is not moving the
increments/decrements : It could help on some machines, and hurt on others.
In the long term, only reducing the number of dirtying can help the average.
>
> Can you do a quick check?
>
>
Sure I can do a check :)
No impact at all on tbench, unless this bench can run in UDP mode :)
CPU: Core 2, speed 3000.1 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit
mask of 0x00 (Unhalted core cycles) count 100000
samples cum. samples % cum. % symbol name
599983 599983 11.2948 11.2948 copy_from_user
549349 1149332 10.3416 21.6364 ipt_do_table
245697 1395029 4.6253 26.2617 copy_to_user
221663 1616692 4.1729 30.4346 schedule
144888 1761580 2.7275 33.1621 tcp_sendmsg
136967 1898547 2.5784 35.7406 tcp_ack
115513 2014060 2.1746 37.9151 tcp_transmit_skb
99517 2113577 1.8734 39.7885 sysenter_past_esp
99438 2213015 1.8719 41.6605 ip_queue_xmit
98171 2311186 1.8481 43.5086 tcp_recvmsg
80763 2391949 1.5204 45.0290 __switch_to
79621 2471570 1.4989 46.5278 tcp_v4_rcv
77210 2548780 1.4535 47.9813 dst_release
69387 2618167 1.3062 49.2876 tcp_rcv_established
64709 2682876 1.2182 50.5057 __tcp_push_pending_frames
55223 2738099 1.0396 51.5453 lock_sock_nested
53754 2791853 1.0119 52.5572 sys_socketcall
50092 2841945 0.9430 53.5002 netif_receive_skb
49499 2891444 0.9318 54.4321 release_sock
47796 2939240 0.8998 55.3318 __inet_lookup_established
45162 2984402 0.8502 56.1820 update_curr
44895 3029297 0.8452 57.0272 ip_rcv
42945 3072242 0.8084 57.8356 dev_queue_xmit
42892 3115134 0.8075 58.6431 tcp_event_data_recv
42768 3157902 0.8051 59.4482 local_bh_enable
41555 3199457 0.7823 60.2305 netif_rx
38613 3238070 0.7269 60.9574 __alloc_skb
38016 3276086 0.7157 61.6730 ip_finish_output
36867 3312953 0.6940 62.3671 tcp_current_mss
36759 3349712 0.6920 63.0591 skb_release_data
35560 3385272 0.6694 63.7285 local_bh_enable_ip
34100 3419372 0.6419 64.3704 sock_recvmsg
33829 3453201 0.6368 65.0073 __kfree_skb
32949 3486150 0.6203 65.6275 sched_clock_cpu
next prev parent reply other threads:[~2008-11-26 7:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-24 8:57 [RFC] Could we avoid touching dst->refcount in some cases ? Eric Dumazet
2008-11-24 9:42 ` Andi Kleen
2008-11-24 10:14 ` Eric Dumazet
2008-11-24 11:24 ` [PATCH] net: avoid a pair of dst_hold()/dst_release() in ip_append_data() Eric Dumazet
2008-11-24 13:59 ` [PATCH] net: avoid a pair of dst_hold()/dst_release() in ip_push_pending_frames() Eric Dumazet
2008-11-25 0:07 ` David Miller
2008-11-24 23:55 ` [PATCH] net: avoid a pair of dst_hold()/dst_release() in ip_append_data() David Miller
2008-11-25 2:22 ` Andi Kleen
2008-11-24 11:27 ` [RFC] Could we avoid touching dst->refcount in some cases ? Andi Kleen
2008-11-24 23:36 ` David Miller
2008-11-24 23:39 ` David Miller
2008-11-25 4:43 ` Eric Dumazet
2008-11-25 5:00 ` David Miller
2008-11-26 0:00 ` [PATCH] net: release skb->dst in sock_queue_rcv_skb() Eric Dumazet
2008-11-26 0:23 ` David Miller
2008-11-26 2:04 ` David Miller
2008-11-26 7:39 ` Eric Dumazet [this message]
2008-11-26 9:08 ` David Miller
2008-12-17 11:25 ` net-next: broken IP_PKTINFO [was Re: [PATCH] net: release skb->dst in sock_queue_rcv_skb()] Mark McLoughlin
2008-12-18 3:34 ` net-next: broken IP_PKTINFO David Miller
2008-12-18 5:59 ` Eric Dumazet
2008-12-18 6:17 ` David Miller
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=492CFD32.7020109@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=andi@firstfloor.org \
--cc=davem@davemloft.net \
--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.