public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/3] timer: Check thread timers only when there are active thread timers
  2015-08-26  3:17 [PATCH 0/3] timer: Improve itimers scalability Jason Low
@ 2015-08-26  3:17 ` Jason Low
  0 siblings, 0 replies; 3+ messages in thread
From: Jason Low @ 2015-08-26  3:17 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Thomas Gleixner, Oleg Nesterov,
	Paul E. McKenney
  Cc: linux-kernel, Frederic Weisbecker, Linus Torvalds,
	Davidlohr Bueso, Steven Rostedt, Andrew Morton, Terry Rudd,
	Rik van Riel, Scott J Norton, Jason Low

The fastpath_timer_check() contains logic to check for if any timers
are set by checking if !task_cputime_zero(). Similarly, we can do this
before calling check_thread_timers(). In the case where there
are only process-wide timers, this will skip all the computations for
the per-thread timers when there are no per-thread timers.

Signed-off-by: Jason Low <jason.low2@hp.com>
---
 kernel/time/posix-cpu-timers.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
index 02596ff..535bef5 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -1168,11 +1168,13 @@ void run_posix_cpu_timers(struct task_struct *tsk)
 	if (!lock_task_sighand(tsk, &flags))
 		return;
 	/*
-	 * Here we take off tsk->signal->cpu_timers[N] and
-	 * tsk->cpu_timers[N] all the timers that are firing, and
-	 * put them on the firing list.
+	 * If there are active per-thread timers, take off
+	 * tsk->signal->cpu_timers[N] and tsk->cpu_timers[N] all the
+	 * timers that are firing, and put them on the firing list.
 	 */
-	check_thread_timers(tsk, &firing);
+	if (!task_cputime_zero(&tsk->cputime_expires))
+		check_thread_timers(tsk, &firing);
+
 	/*
 	 * If there are any active process wide timers (POSIX 1.b, itimers,
 	 * RLIMIT_CPU) cputimer must be running.
-- 
1.7.2.5


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/3] timer: Check thread timers only when there are active thread timers
@ 2015-08-26 17:04 George Spelvin
  2015-08-26 17:41 ` Jason Low
  0 siblings, 1 reply; 3+ messages in thread
From: George Spelvin @ 2015-08-26 17:04 UTC (permalink / raw)
  To: jason.low2; +Cc: akpm, linux, linux-kernel


-	check_thread_timers(tsk, &firing);
+	if (!task_cputime_zero(&tsk->cputime_expires))
+		check_thread_timers(tsk, &firing);

Sincere question; I'm not certain myself: would it make more sense to put
this shortcut into check_thread_timers()?

It seems more like an optimization of that function than something the
caller needs to know about.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 2/3] timer: Check thread timers only when there are active thread timers
  2015-08-26 17:04 [PATCH 2/3] timer: Check thread timers only when there are active thread timers George Spelvin
@ 2015-08-26 17:41 ` Jason Low
  0 siblings, 0 replies; 3+ messages in thread
From: Jason Low @ 2015-08-26 17:41 UTC (permalink / raw)
  To: George Spelvin; +Cc: akpm, linux-kernel, jason.low2

On Wed, 2015-08-26 at 13:04 -0400, George Spelvin wrote:
> -	check_thread_timers(tsk, &firing);
> +	if (!task_cputime_zero(&tsk->cputime_expires))
> +		check_thread_timers(tsk, &firing);
> 
> Sincere question; I'm not certain myself: would it make more sense to put
> this shortcut into check_thread_timers()?
> 
> It seems more like an optimization of that function than something the
> caller needs to know about.

Yes, I also thought it might be better if we add something like:

	if (task_cputime_zero(&tsk->cputime_expires)
		return;

in check_thread_timers(). The reason I made it this way though is
because in the next few lines, we do a similar check before calling
check_process_timers(), and I wanted to keep things consistent.

However, perhaps we can consider also moving that
tsk->signal->cputimer.running check into check_process_timers() too.

Thanks for the suggestions.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-08-26 17:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-26 17:04 [PATCH 2/3] timer: Check thread timers only when there are active thread timers George Spelvin
2015-08-26 17:41 ` Jason Low
  -- strict thread matches above, loose matches on Subject: below --
2015-08-26  3:17 [PATCH 0/3] timer: Improve itimers scalability Jason Low
2015-08-26  3:17 ` [PATCH 2/3] timer: Check thread timers only when there are active thread timers Jason Low

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox