Messages in this thread | | | Date | Mon, 27 Feb 2006 14:34:14 +0530 | From | Dipankar Sarma <> | Subject | Re: [Patch 4/7] Add sysctl for delay accounting |
| |
On Mon, Feb 27, 2006 at 09:42:23AM +0100, Arjan van de Ven wrote: > On Mon, 2006-02-27 at 03:38 -0500, Shailabh Nagar wrote: > > Arjan van de Ven wrote: > > > > The function needs to allocate task_delay_info structs for all tasks > > that might > > have been forked since the last time delay accounting was turned off. > > Either we have to count how many such tasks there are, or preallocate > > nr_tasks (as an upper bound) and then use as many as needed. > > it generally feels really fragile, especially with the task enumeration > going to RCU soon. (eg you'd lose the ability to lock out new task > creation)
I haven't yet seen any RCU-based code that does this. Can you point out what patches you are talking about ? As of 2.6.16-rc4 and -rt15, AFAICS, you can count tasks by holding the read side of tasklist_lock. Granted it is a bit ugly to repeat this in order to overcome the race on dropping tasklist_lock for allocation.
> On first sight it looks a lot better to allocate these things on demand, > but I'm not sure how the sleeping-allocation would interact with the > places it'd need to be called...
This could be a problem for contexts where sleeping cannot be permitted, not to mention fast paths where blocking may introduce a skew. It seems simpler to just let this happen during sysctl time.
Thanks Dipankar - 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/
| |