lkml.org 
[lkml]   [2006]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [rfc][patch] Avoid taking global tasklist_lock for single threadedprocess at getrusage()
    Hello Ravikiran,

    Ravikiran G Thirumalai wrote:
    >
    > Following patch avoids taking the global tasklist_lock when possible,
    > if a process is single threaded during getrusage(). Any avoidance of
    > tasklist_lock is good for NUMA boxes (and possibly for large SMPs).
    >
    > ...
    >
    > static void k_getrusage(struct task_struct *p, int who, struct rusage *r)
    > @@ -1681,14 +1697,22 @@ static void k_getrusage(struct task_stru
    > struct task_struct *t;
    > unsigned long flags;
    > cputime_t utime, stime;
    > + int need_lock = 0;
    >
    > memset((char *) r, 0, sizeof *r);
    > -
    > - if (unlikely(!p->signal))
    > - return;
    > -
    > utime = stime = cputime_zero;
    >
    > + need_lock = (p != current || !thread_group_empty(p));
    > + if (need_lock) {
    > + read_lock(&tasklist_lock);
    > + if (unlikely(!p->signal)) {
    > + read_unlock(&tasklist_lock);
    > + return;
    > + }
    > + } else
    > + /* See locking comments above */
    > + smp_rmb();
    > +

    I think now it is possible to improve this patch.

    Could you look at these patches?

    [PATCH] introduce lock_task_sighand() helper
    http://marc.theaimsgroup.com/?l=linux-kernel&m=114028190927763

    [PATCH 0/3] make threads traversal ->siglock safe
    http://marc.theaimsgroup.com/?l=linux-kernel&m=114064825626496

    I think we can forget about tasklist_lock in k_getrusage() completely
    and just use lock_task_sighand().

    What do you think?

    Oleg.
    -
    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: 2006-03-20 19:10    [W:0.023 / U:0.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site