Messages in this thread | | | Date | Fri, 23 Jun 2006 22:59:04 -0400 | From | Shailabh Nagar <> | Subject | Re: [Patch][RFC] Disabling per-tgid stats on task exit in taskstats |
| |
Andrew Morton wrote:
>On Fri, 23 Jun 2006 15:07:28 -0700 >Jay Lan <jlan@engr.sgi.com> wrote: > > > >>>> %ovhd of tgid on over off >>>> (higher is worse) >>>> >>>>Exit User Sys Elapsed >>>>Rate Time Time Time >>>> >>>>2283 25.76 649.41 -0.14 >>>>1193 -10.53 88.81 -0.12 >>>>963 -11.90 3.28 -0.10 >>>>806 -8.54 -0.84 0.16 >>>>694 -4.41 2.38 0.03 >>>> >>>> >>>> >>>Oh wow. Something's gone quadratic there. >>> >>> >>> >>It was due to a loop in fill_tgid() when per-TG stats >>data are assembled for netlink: >> do { >> rc = delayacct_add_tsk(stats, tsk); >> if (rc) >> break; >> >> } while_each_thread(first, tsk); >> >>and it is executed inside a lock. >>Fortunately single threaded appls do not hit this code. >> >> > >Am I reading this right? We do that loop when each thread within the >thread group exits? > Yes.
> How come? > > To get the sum of all per-tid data for threads that are currently alive. This is returned to userspace with each thread exit.
>Is there some better lock we can use in there? It only has to be >threadgroup-wide rather than kernel-wide. > > The lock we're holding is the tasklist_lock. To go through all the threads of a thread group thats the only lock that can protect integrity of while_each_thread afaics.
--Shailabh
- 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/
| |