Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761624Ab3EFXr2 (ORCPT ); Mon, 6 May 2013 19:47:28 -0400 Received: from mail-wg0-f41.google.com ([74.125.82.41]:64865 "EHLO mail-wg0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761560Ab3EFXrX (ORCPT ); Mon, 6 May 2013 19:47:23 -0400 Date: Tue, 7 May 2013 01:47:19 +0200 From: Frederic Weisbecker To: kosaki.motohiro@gmail.com Cc: linux-kernel@vger.kernel.org, Olivier Langlois , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , KOSAKI Motohiro Subject: Re: [PATCH 1/7] posix-cpu-timers: don't account cpu timer after stopped thread runtime accounting Message-ID: <20130506234717.GA1703@somewhere> References: <1367556468-4021-1-git-send-email-kosaki.motohiro@gmail.com> <1367556468-4021-3-git-send-email-kosaki.motohiro@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1367556468-4021-3-git-send-email-kosaki.motohiro@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2120 Lines: 54 On Fri, May 03, 2013 at 12:47:42AM -0400, kosaki.motohiro@gmail.com wrote: > From: KOSAKI Motohiro > > When tsk->signal->cputimer->running is 1, signal->cputimer and > tsk->sum_sched_runtime increase at the same pace because update_curr() > increases both accounting. > > However, there is one exception. When thread exiting, __exit_signal() turns > over task's sum_shced_runtime to sig->sum_sched_runtime, but it doesn't stop > signal->cputimer accounting. > > This inconsistency makes POSIX timer wake up too early. This patch fixes it. > > Cc: Thomas Gleixner > Cc: Frederic Weisbecker > Cc: Ingo Molnar > Acked-by: Peter Zijlstra > Signed-off-by: Olivier Langlois > Signed-off-by: KOSAKI Motohiro > --- > kernel/sched/stats.h | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/kernel/sched/stats.h b/kernel/sched/stats.h > index 2ef90a5..5a0cfc4 100644 > --- a/kernel/sched/stats.h > +++ b/kernel/sched/stats.h > @@ -225,6 +225,13 @@ static inline void account_group_exec_runtime(struct task_struct *tsk, > if (!cputimer->running) > return; > > + /* > + * After turning over se.sum_exec_runtime to sig->sum_sched_runtime > + * in __exit_signal(), we must not account exec_runtime for consistency. > + */ > + if (unlikely(!tsk->sighand)) > + return; Ok, if we want the clock and timer to be consistent, do we also want the same check in account_group_user_time() and account_group_system_time()? The task can still account a tick after autoreaping itself between release_task() and the final schedule(). > + > raw_spin_lock(&cputimer->lock); > cputimer->cputime.sum_exec_runtime += ns; > raw_spin_unlock(&cputimer->lock); > -- > 1.7.1 > -- 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/