linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] few functions clean up
@ 2012-09-14  5:47 Alex Shi
  2012-09-14  5:47 ` [PATCH v2 1/3] nohz: clean up select_nohz_load_balancer() Alex Shi
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Alex Shi @ 2012-09-14  5:47 UTC (permalink / raw)
  To: mingo, peterz, tglx, suresh.b.siddha, venki; +Cc: linux-kernel

Changed according to Peter and Suresh suggestion.

Thanks
[PATCH v2 1/3] nohz: clean up select_nohz_load_balancer()
[PATCH v2 2/3] sched:nohz rename clear_nohz_tick_stopped as
[PATCH v2 3/3] sched/balance: remove on_null_domain() in

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

* [PATCH v2 1/3] nohz: clean up select_nohz_load_balancer()
  2012-09-14  5:47 [PATCH v2] few functions clean up Alex Shi
@ 2012-09-14  5:47 ` Alex Shi
  2012-09-14  5:47 ` [PATCH v2 2/3] sched:nohz rename clear_nohz_tick_stopped as nohz_balance_exit_idle Alex Shi
  2012-09-14  5:47 ` [PATCH v2 3/3] sched/balance: remove on_null_domain() in trigger_load_balance Alex Shi
  2 siblings, 0 replies; 4+ messages in thread
From: Alex Shi @ 2012-09-14  5:47 UTC (permalink / raw)
  To: mingo, peterz, tglx, suresh.b.siddha, venki; +Cc: linux-kernel

There is no load_balancer to be selected now. It just set state of
nohz tick stopping.

So rename the function as nohz_balance_enter_idle according to Peter's
suggestion, pass the 'cpu' from parameter and then
remove the useless calling from tick_nohz_restart_sched_tick().

Signed-off-by: Alex Shi <alex.shi@intel.com>
---
 include/linux/sched.h    |  4 ++--
 kernel/sched/fair.c      | 19 +++++++------------
 kernel/time/tick-sched.c |  3 +--
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index b8c8664..e723a4b 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -273,11 +273,11 @@ extern void init_idle_bootup_task(struct task_struct *idle);
 extern int runqueue_is_locked(int cpu);
 
 #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ)
-extern void select_nohz_load_balancer(int stop_tick);
+extern void nohz_balance_enter_idle(int cpu);
 extern void set_cpu_sd_state_idle(void);
 extern int get_nohz_timer_target(void);
 #else
-static inline void select_nohz_load_balancer(int stop_tick) { }
+static inline void nohz_balance_enter_idle(int cpu) { }
 static inline void set_cpu_sd_state_idle(void) { }
 #endif
 
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index c219bf8..b681941 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4674,28 +4674,23 @@ void set_cpu_sd_state_idle(void)
 }
 
 /*
- * This routine will record that this cpu is going idle with tick stopped.
+ * This routine will record that the cpu is going idle with tick stopped.
  * This info will be used in performing idle load balancing in the future.
  */
-void select_nohz_load_balancer(int stop_tick)
+void nohz_balance_enter_idle(int cpu)
 {
-	int cpu = smp_processor_id();
-
 	/*
 	 * If this cpu is going down, then nothing needs to be done.
 	 */
 	if (!cpu_active(cpu))
 		return;
 
-	if (stop_tick) {
-		if (test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))
-			return;
+	if (test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))
+		return;
 
-		cpumask_set_cpu(cpu, nohz.idle_cpus_mask);
-		atomic_inc(&nohz.nr_cpus);
-		set_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
-	}
-	return;
+	cpumask_set_cpu(cpu, nohz.idle_cpus_mask);
+	atomic_inc(&nohz.nr_cpus);
+	set_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu));
 }
 
 static int __cpuinit sched_ilb_notifier(struct notifier_block *nfb,
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 024540f..0e6a945 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -372,7 +372,7 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
 		 * the scheduler tick in nohz_restart_sched_tick.
 		 */
 		if (!ts->tick_stopped) {
-			select_nohz_load_balancer(1);
+			nohz_balance_enter_idle(cpu);
 			calc_load_enter_idle();
 
 			ts->last_tick = hrtimer_get_expires(&ts->sched_timer);
@@ -569,7 +569,6 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)
 static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now)
 {
 	/* Update jiffies first */
-	select_nohz_load_balancer(0);
 	tick_do_update_jiffies64(now);
 	update_cpu_load_nohz();
 
-- 
1.7.12


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

* [PATCH v2 2/3] sched:nohz rename clear_nohz_tick_stopped as nohz_balance_exit_idle
  2012-09-14  5:47 [PATCH v2] few functions clean up Alex Shi
  2012-09-14  5:47 ` [PATCH v2 1/3] nohz: clean up select_nohz_load_balancer() Alex Shi
@ 2012-09-14  5:47 ` Alex Shi
  2012-09-14  5:47 ` [PATCH v2 3/3] sched/balance: remove on_null_domain() in trigger_load_balance Alex Shi
  2 siblings, 0 replies; 4+ messages in thread
From: Alex Shi @ 2012-09-14  5:47 UTC (permalink / raw)
  To: mingo, peterz, tglx, suresh.b.siddha, venki; +Cc: linux-kernel

This patch just rename the function clear_nohz_tick_stopped() to
nohz_balance_exit_idle(), that align with nohz_balance_enter_idle.

no function changes.

Signed-off-by: Alex Shi <alex.shi@intel.com>
---
 kernel/sched/fair.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index b681941..60d5505 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4634,7 +4634,7 @@ static void nohz_balancer_kick(int cpu)
 	return;
 }
 
-static inline void clear_nohz_tick_stopped(int cpu)
+static inline void nohz_balance_exit_idle(int cpu)
 {
 	if (unlikely(test_bit(NOHZ_TICK_STOPPED, nohz_flags(cpu)))) {
 		cpumask_clear_cpu(cpu, nohz.idle_cpus_mask);
@@ -4698,7 +4698,7 @@ static int __cpuinit sched_ilb_notifier(struct notifier_block *nfb,
 {
 	switch (action & ~CPU_TASKS_FROZEN) {
 	case CPU_DYING:
-		clear_nohz_tick_stopped(smp_processor_id());
+		nohz_balance_exit_idle(smp_processor_id());
 		return NOTIFY_OK;
 	default:
 		return NOTIFY_DONE;
@@ -4858,7 +4858,7 @@ static inline int nohz_kick_needed(struct rq *rq, int cpu)
 	* busy tick after returning from idle, we will update the busy stats.
 	*/
 	set_cpu_sd_state_busy();
-	clear_nohz_tick_stopped(cpu);
+	nohz_balance_exit_idle(cpu);
 
 	/*
 	 * None are in tickless mode and hence no need for NOHZ idle load
-- 
1.7.12


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

* [PATCH v2 3/3] sched/balance: remove on_null_domain() in trigger_load_balance
  2012-09-14  5:47 [PATCH v2] few functions clean up Alex Shi
  2012-09-14  5:47 ` [PATCH v2 1/3] nohz: clean up select_nohz_load_balancer() Alex Shi
  2012-09-14  5:47 ` [PATCH v2 2/3] sched:nohz rename clear_nohz_tick_stopped as nohz_balance_exit_idle Alex Shi
@ 2012-09-14  5:47 ` Alex Shi
  2 siblings, 0 replies; 4+ messages in thread
From: Alex Shi @ 2012-09-14  5:47 UTC (permalink / raw)
  To: mingo, peterz, tglx, suresh.b.siddha, venki; +Cc: linux-kernel

According to Suresh's inverstigation, the first on_null_domain in
trigger_load_balance is for avoiding unnecessary loadbalances(from
softirq) when a SMP kernel running on UP machine.
The second on_null_domain is not needed, since nohz_kick_needed()
will return 0 in this scenario.

So, remove the 2nd on_null_domain calling.

Signed-off-by: Alex Shi <alex.shi@intel.com>
---
 kernel/sched/fair.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 60d5505..1ae2c66 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4938,7 +4938,7 @@ void trigger_load_balance(struct rq *rq, int cpu)
 	    likely(!on_null_domain(cpu)))
 		raise_softirq(SCHED_SOFTIRQ);
 #ifdef CONFIG_NO_HZ
-	if (nohz_kick_needed(rq, cpu) && likely(!on_null_domain(cpu)))
+	if (nohz_kick_needed(rq, cpu))
 		nohz_balancer_kick(cpu);
 #endif
 }
-- 
1.7.12


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

end of thread, other threads:[~2012-09-14  5:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-14  5:47 [PATCH v2] few functions clean up Alex Shi
2012-09-14  5:47 ` [PATCH v2 1/3] nohz: clean up select_nohz_load_balancer() Alex Shi
2012-09-14  5:47 ` [PATCH v2 2/3] sched:nohz rename clear_nohz_tick_stopped as nohz_balance_exit_idle Alex Shi
2012-09-14  5:47 ` [PATCH v2 3/3] sched/balance: remove on_null_domain() in trigger_load_balance Alex Shi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).