Prev: [RFC,PATCH 2/2] cputimers/proc: do_task_stat()->thread_group_times() is racy and O(n) under ->siglock
Next: Somebody take a look please! (some kind of kernel bug?)
From: Peter Zijlstra on 24 Mar 2010 17:00 On Wed, 2010-03-24 at 21:45 +0100, Oleg Nesterov wrote: > Nowadays ->siglock is overloaded, it would be really nice to change > do_task_stat() to walk through the list of threads lockless. And note > that we are doing while_each_thread() twice! > > while_each_thread() is rcu-safe, but thread_group_times() also needs > ->siglock to serialize the modifications of signal_struct->prev_Xtime > members. > > Right, so from what I remember the issue is that, yes top et al rely on that monotonicity, but more importantly I think clock_gettime(CLOCK_PROCESS_CPUTIME_ID) should indeed use ->siglock to ensure it serializes against do_exit() so that either we iterate the thread or get the accumulated runtime from signal_struct but not both (or neither). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Peter Zijlstra on 25 Mar 2010 08:20
On Thu, 2010-03-25 at 13:12 +0100, Oleg Nesterov wrote: > > Right, so from what I remember the issue is that, yes top et al rely on > > that monotonicity, > > Really? So, do you think the change above will break user-space? > > How sad :/ IIRC top can give very funny results if you break it hard enough, it likes to give 9999% cputime if the thing goes backwards over the sample interval. But I'm not sure your race is large enough to ever show up like that, so it might all just work out, but in general it does tend to require monotonic times. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |