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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).