Messages in this thread | | | Subject | Re: [PATCH 0/1] RFC: poll/select performance on datagram sockets | From | Eric Dumazet <> | Date | Fri, 29 Oct 2010 22:20:14 +0200 |
| |
Le vendredi 29 octobre 2010 à 13:08 -0700, Davide Libenzi a écrit :
> Yeah, epoll does check for event hints coming with the callback wakeup, > and avoid waking up epoll_wait() waiters, for non matching events. > Most of the devices we care about, have been modified to report the event > mask with the wakeup call.
Alban test program is _very_ pathological :
All the time is consumed in do_select() because of false sharing between two tasks.
We can probably rearrange variables in do_select() to make this false sharing less problematic. I am taking a look at this.
Events: 3K cycles + 26.14% uclient [kernel.kallsyms] [k] do_raw_spin_lock + 21.11% uclient [kernel.kallsyms] [k] do_select + 13.38% uclient [kernel.kallsyms] [k] pollwake + 9.22% uclient [kernel.kallsyms] [k] unix_dgram_poll + 5.24% uclient [kernel.kallsyms] [k] unix_peer_get + 3.04% uclient [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore + 3.03% uclient [kernel.kallsyms] [k] task_rq_lock + 2.85% uclient [kernel.kallsyms] [k] do_raw_spin_unlock + 1.84% uclient [kernel.kallsyms] [k] try_to_wake_up + 1.55% uclient [kernel.kallsyms] [k] fget_light + 1.34% uclient [kernel.kallsyms] [k] core_kernel_text
annotate :
5.66 : 410fb342: 85 ff test %edi,%edi 0.00 : 410fb344: 74 1f je 410fb365 <do_select+0x3d5> 0.13 : 410fb346: 85 b5 6c fd ff ff test %esi,-0x294(%ebp) 0.00 : 410fb34c: 74 17 je 410fb365 <do_select+0x3d5> : res_out |= bit; 0.00 : 410fb34e: 09 b5 5c fd ff ff or %esi,-0x2a4(%ebp) : retval++; 0.00 : 410fb354: 83 85 64 fd ff ff 01 addl $0x1,-0x29c(%ebp) : wait = NULL; 0.00 : 410fb35b: c7 85 7c fd ff ff 00 movl $0x0,-0x284(%ebp) 0.00 : 410fb362: 00 00 00 : } : if ((mask & POLLEX_SET) && (ex & bit)) { 43.27 : 410fb365: 85 d2 test %edx,%edx 0.00 : 410fb367: 0f 84 f3 fe ff ff je 410fb260 <do_select+0x2d0> 0.00 : 410fb36d: 85 b5 74 fd ff ff test %esi,-0x28c(%ebp) 0.00 : 410fb373: 0f 84 e7 fe ff ff je 410fb260 <do_select+0x2d0> : res_ex |= bit; 0.00 : 410fb379: 09 b5 58 fd ff ff or %esi,-0x2a8(%ebp) : if (all_bits == 0) { : i += __NFDBITS; : continue; : }
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |