Re: [rfc][patch] Avoid taking global tasklist_lock for single threaded process at getrusage()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 21, 2005 at 12:20:20PM -0800, Christoph Lameter wrote:
> On Wed, 21 Dec 2005, 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).  We found 
> > that this optimization reduces the runtime of a certain scientific application 
> > by half on a 16 cpu NUMA box.
> > 
> > This optimization is similar to the sys_times tasklist_lock optimization.
> 
> The optimization of sys_times is only possible because the "current" 
> task is running and therefore guarantees that the thread will not be 
> exiting.

Yes.

> 
> getrusage and k_getrusage can be called onother tasks than the currently 
> executing task and in those cases better take the tasklist lock because 
> the task may exit while getrusage runs.

We did look at that. Cases RUSAGE_CHILDREN and RUSAGE_SELF are always called by the 
current task, so we can avoid tasklist locking there.
getrusage for non-current tasks are always called with RUSAGE_BOTH.
We ensure we  always take the siglock for RUSAGE_BOTH case, so that the
p->signal* fields are protected and take the tasklist_lock only if we have 
to traverse the tasklist hashlist. Isn't this safe?

Thanks,
Kiran
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux