All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.