lkml.org 
[lkml]   [2010]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 0/1] RFC: poll/select performance on datagram sockets
    From
    Date
    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/

    \
     
     \ /
      Last update: 2010-10-29 22:23    [W:3.028 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site