Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1603437
| From | Eric Dumazet <eric.dumazet@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t |
| Date | 2017-03-17 17:20 +0100 |
| Message-ID | <tm2LE-KO-21@gated-at.bofh.it> (permalink) |
| References | <tlFFo-lI-31@gated-at.bofh.it> <tlGUN-197-7@gated-at.bofh.it> <tlHxv-1ET-15@gated-at.bofh.it> <tlJ6h-2QJ-1@gated-at.bofh.it> <tlUO5-2W2-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Fri, 2017-03-17 at 07:42 +0000, Reshetova, Elena wrote: > Should we then first measure the actual numbers to understand what we > are talking here about? > I would be glad to do it if you suggest what is the correct way to do > measurements here to actually reflect the real life use cases. How have these patches been tested in real life exactly ? Can you quantify number of added cycles per TCP packet, where I expect we have maybe 20 atomic operations in all layers ... (sk refcnt, skb->users, page refcounts, sk->sk_wmem_alloc, sk->sk_rmem_alloc, qdisc ...) Once we 'protect' all of them, cost will be quite high. This translates to more fossil fuel being burnt. one atomic_inc() used to be a single x86 instruction. Rough estimate of refcount_inc() : 0000000000000140 <refcount_inc>: 140: 55 push %rbp 141: 48 89 e5 mov %rsp,%rbp 144: e8 00 00 00 00 callq refcount_inc_not_zero 149: 84 c0 test %al,%al 14b: 74 02 je 14f <refcount_inc+0xf> 14d: 5d pop %rbp 14e: c3 retq 00000000000000e0 <refcount_inc_not_zero>: e0: 8b 17 mov (%rdi),%edx e2: eb 10 jmp f4 <refcount_inc_not_zero+0x14> e4: 85 c9 test %ecx,%ecx e6: 74 1b je 103 <refcount_inc_not_zero+0x23> e8: 89 d0 mov %edx,%eax ea: f0 0f b1 0f lock cmpxchg %ecx,(%rdi) ee: 39 d0 cmp %edx,%eax f0: 74 0c je fe <refcount_inc_not_zero+0x1e> f2: 89 c2 mov %eax,%edx f4: 85 d2 test %edx,%edx f6: 8d 4a 01 lea 0x1(%rdx),%ecx f9: 75 e9 jne e4 <refcount_inc_not_zero+0x4> fb: 31 c0 xor %eax,%eax fd: c3 retq fe: 83 f9 ff cmp $0xffffffff,%ecx 101: 74 06 je 109 <refcount_inc_not_zero+0x29> 103: b8 01 00 00 00 mov $0x1,%eax 108: c3 retq This is simply bloat for most cases. Again, I believe this infrastructure makes sense for debugging kernels. If some vendors are willing to run fully enabled debug kernels, that is their choice. Probably many devices wont show any difference. Have we forced KASAN being enabled in linux kernel, just because it found ~400 bugs so far ? I believe refcount_t infra is not mature enough to be widely used right now. Maybe in few months when we have more flexibility, like existing debugging facilities (CONFIG_DEBUG_PAGEALLOC, CONFIG_DEBUG_PAGE_REF, LOCKDEP, KMEMLEAK, KASAN, ...)
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/17] net subsystem refcount conversions Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:30 +0100
[PATCH 02/17] net: convert neigh_params.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:30 +0100
[PATCH 10/17] net: convert in_device.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 12/17] net: convert unix_address.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 14/17] net: convert inet_frag_queue.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 01/17] net: convert neighbour.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 11/17] net: convert netpoll_info.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-16 18:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-16 18:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t David Miller <davem@davemloft.net> - 2017-03-16 20:20 +0100
RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t "Reshetova, Elena" <elena.reshetova@intel.com> - 2017-03-17 08:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-17 17:20 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-18 18:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t David Miller <davem@davemloft.net> - 2017-03-19 02:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 11:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 14:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 14:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 16:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 17:20 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 17:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 16:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 16:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-21 21:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-21 22:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t David Miller <davem@davemloft.net> - 2017-03-21 23:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-22 01:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 03:10 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 13:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 14:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 15:40 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 16:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 16:10 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 16:30 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 18:00 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-22 20:10 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 14:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-20 15:50 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-20 14:50 +0100
RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t David Laight <David.Laight@ACULAB.COM> - 2017-03-20 15:20 +0100
Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 15:30 +0100
RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t David Laight <David.Laight@ACULAB.COM> - 2017-03-20 16:10 +0100
[PATCH 05/17] net: convert sk_buff_fclones.fclone_ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 15/17] net: convert net.passive from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 16/17] net: convert netlbl_lsm_cache.refcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 09/17] net: convert ip_mc_list.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 04/17] net: convert sk_buff.users from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
Re: [PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to refcount_t Daniel Borkmann <daniel@iogearbox.net> - 2017-03-16 17:10 +0100
RE: [PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to refcount_t "Reshetova, Elena" <elena.reshetova@intel.com> - 2017-03-17 09:20 +0100
[PATCH 17/17] net: convert packet_fanout.sk_ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 06/17] net: convert sock.sk_wmem_alloc from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
[PATCH 13/17] net: convert fib_rule.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
csiph-web