lkml.org 
[lkml]   [2013]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4/5] futex: Avoid taking hb lock if nothing to wakeup
    From
    Date
    On Fri, 2013-11-22 at 16:56 -0800, Davidlohr Bueso wrote:
    > In futex_wake() there is clearly no point in taking the hb->lock if
    > we know beforehand that there are no tasks to be woken. This comes
    > at the smaller cost of doing some atomic operations to keep track of
    > the list's size. Specifically, increment the counter when an element is
    > added to the list, and decrement when it is removed. Of course, if the
    > counter is 0, then there are no tasks blocked on a futex. Some special
    > considerations:
    >
    > - increment the counter at queue_lock() as we always end up calling
    > queue_me() which adds the element to the list. Upon any error,
    > queue_unlock() is called for housekeeping, for which we decrement
    > to mach the increment done in queue_lock().
    >
    > - decrement the counter at __unqueue_me() to reflect when an element is
    > removed from the queue for wakeup related purposes.

    What is the problem you are trying to solve here?

    The fast-path in futexes is not calling into the kernel at all, if
    you've made the syscall, you've already lost. What kind of improvement
    are you seeing by adding this optimization? Is it worth the introduction
    of atomic operations into a file known to the state of California to
    increase the risk of liver failure?

    --
    Darren Hart
    Intel Open Source Technology Center
    Yocto Project - Linux Kernel




    \
     
     \ /
      Last update: 2013-11-23 07:01    [W:3.195 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site