Skip to contentSkip to conversation

sched: Notify hrtimer users of switches to NOHZ mode

PATCH In review Stephen Boyd 3 participants 5 messages Jan 19, 2011 Nohz, dynticks support

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sched: Notify hrtimer users of switches to NOHZ mode

When NOHZ=y and high res timers are disabled (via cmdline or Kconfig) tick_nohz_switch_to_nohz() will notify the user about switching into NOHZ mode. Nothing is printed for the case where HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by duplicating the printk from the low res NOHZ path in the high res NOHZ path.

---

This confused me since I was thinking 'dmesg | grep -i NOHZ' would tell me if NOHZ was enabled, but if I have hrtimers there is nothing. If we don't do this we should probably remove the original printk.

 kernel/time/tick-sched.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
kernel/time/tick-sched.c +4 -1
index 3e216e0..6c012c5 100644
@@ -795,8 +795,11 @@ void tick_setup_sched_timer(void)
 	}
 
 #ifdef CONFIG_NO_HZ
-	if (tick_nohz_enabled)
+	if (tick_nohz_enabled) {
 		ts->nohz_mode = NOHZ_MODE_HIGHRES;
+		pr_info("Switched to NOHz mode on CPU #%d\n",
+				smp_processor_id());
+	}
 #endif
 }
 #endif /* HIGH_RES_TIMERS */
Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
#1 lore raw
Quoted 7 lines · Stephen Boyd

When NOHZ=y and high res timers are disabled (via cmdline or Kconfig) tick_nohz_switch_to_nohz() will notify the user about switching into NOHZ mode. Nothing is printed for the case where HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by duplicating the printk from the low res NOHZ path in the high res NOHZ path.

Quoted 7 lines

---

This confused me since I was thinking 'dmesg | grep -i NOHZ' would tell me if NOHZ was enabled, but if I have hrtimers there is nothing. If we don't do this we should probably remove the original printk.

I'm not quite sure we want _more_ dmesg chatter, how about you look at the output of:

grep -e "^cpu" -e "nohz" /proc/timer_list

instead?

Quoted 20 lines
 kernel/time/tick-sched.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
kernel/time/tick-sched.c +4 -1
index 3e216e0..6c012c5 100644
@@ -795,8 +795,11 @@ void tick_setup_sched_timer(void)
 	}
 
 #ifdef CONFIG_NO_HZ
-	if (tick_nohz_enabled)
+	if (tick_nohz_enabled) {
 		ts->nohz_mode = NOHZ_MODE_HIGHRES;
+		pr_info("Switched to NOHz mode on CPU #%d\n",
+				smp_processor_id());
+	}
 #endif
 }
 #endif /* HIGH_RES_TIMERS */
#2 lore raw
Quoted 11 lines · Peter Zijlstra
Quoted 10 lines · Stephen Boyd

When NOHZ=y and high res timers are disabled (via cmdline or Kconfig) tick_nohz_switch_to_nohz() will notify the user about switching into NOHZ mode. Nothing is printed for the case where HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by duplicating the printk from the low res NOHZ path in the high res NOHZ path.

---

Quoted 6 lines
Quoted 4 lines

This confused me since I was thinking 'dmesg | grep -i NOHZ' would tell me if NOHZ was enabled, but if I have hrtimers there is nothing. If we don't do this we should probably remove the original printk.

I'm not quite sure we want _more_ dmesg chatter, [...]

Well, we used to have bugs in the past where the system locked up after changing the main hrtimer mode, so the messages are useful.

This patch completes the messages in that sense and makes them consistent. If we want to remove them altogether that would be another patch.

Thanks,

Ingo

#3 lore raw

[tip:timers/urgent] hrtimers: Notify hrtimer users of switches to NOHZ mode

In reply to Stephen Boyd
Commit-ID:  fe96565ce90aca25786d709ebb5fb5e49b8bbafe
Gitweb:     http://git.kernel.org/tip/fe96565ce90aca25786d709ebb5fb5e49b8bbafe
Author:     Stephen Boyd <[email protected]>
AuthorDate: Tue, 18 Jan 2011 22:46:34 -0800
Committer:  Ingo Molnar <[email protected]>
CommitDate: Wed, 19 Jan 2011 12:08:44 +0100

hrtimers: Notify hrtimer users of switches to NOHZ mode

When NOHZ=y and high res timers are disabled (via cmdline or Kconfig) tick_nohz_switch_to_nohz() will notify the user about switching into NOHZ mode. Nothing is printed for the case where HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by duplicating the printk from the low res NOHZ path in the high res NOHZ path.

This confused me since I was thinking 'dmesg | grep -i NOHZ' would tell me if NOHZ was enabled, but if I have hrtimers there is nothing.

LKML-Reference: <[email protected]>

---
 kernel/time/tick-sched.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
kernel/time/tick-sched.c +5 -4
index 3e216e0..9760f4f 100644
@@ -640,10 +640,8 @@ static void tick_nohz_switch_to_nohz(void)
 			break;
 		next = ktime_add(next, tick_period);
 	}
+	printk(KERN_INFO "Switched to NOHz mode on CPU #%d\n", smp_processor_id());
 	local_irq_enable();
-
-	printk(KERN_INFO "Switched to NOHz mode on CPU #%d\n",
-	       smp_processor_id());
 }
 
 /*
@@ -795,8 +793,11 @@ void tick_setup_sched_timer(void)
 	}
 
 #ifdef CONFIG_NO_HZ
-	if (tick_nohz_enabled)
+	if (tick_nohz_enabled) {
 		ts->nohz_mode = NOHZ_MODE_HIGHRES;
+		pr_info("Switched to NOHz mode on CPU #%d\n",
+				smp_processor_id());
+	}
 #endif
 }
 #endif /* HIGH_RES_TIMERS */
#4 lore raw

[tip:timers/urgent] hrtimers: Notify hrtimer users of switches to NOHZ mode

In reply to Stephen Boyd
Commit-ID:  2d0640b47da74cff7c11642c798d40de861ed524
Gitweb:     http://git.kernel.org/tip/2d0640b47da74cff7c11642c798d40de861ed524
Author:     Stephen Boyd <[email protected]>
AuthorDate: Tue, 18 Jan 2011 22:46:34 -0800
Committer:  Ingo Molnar <[email protected]>
CommitDate: Wed, 19 Jan 2011 20:08:15 +0100

hrtimers: Notify hrtimer users of switches to NOHZ mode

When NOHZ=y and high res timers are disabled (via cmdline or Kconfig) tick_nohz_switch_to_nohz() will notify the user about switching into NOHZ mode. Nothing is printed for the case where HIGH_RES_TIMERS=y. Fix this for the HIGH_RES_TIMERS=y case by duplicating the printk from the low res NOHZ path in the high res NOHZ path.

This confused me since I was thinking 'dmesg | grep -i NOHZ' would tell me if NOHZ was enabled, but if I have hrtimers there is nothing.

LKML-Reference: <[email protected]>

---
 kernel/time/tick-sched.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
kernel/time/tick-sched.c +4 -3
index 3e216e0..c55ea24 100644
@@ -642,8 +642,7 @@ static void tick_nohz_switch_to_nohz(void)
 	}
 	local_irq_enable();
 
-	printk(KERN_INFO "Switched to NOHz mode on CPU #%d\n",
-	       smp_processor_id());
+	printk(KERN_INFO "Switched to NOHz mode on CPU #%d\n", smp_processor_id());
 }
 
 /*
@@ -795,8 +794,10 @@ void tick_setup_sched_timer(void)
 	}
 
 #ifdef CONFIG_NO_HZ
-	if (tick_nohz_enabled)
+	if (tick_nohz_enabled) {
 		ts->nohz_mode = NOHZ_MODE_HIGHRES;
+		printk(KERN_INFO "Switched to NOHz mode on CPU #%d\n", smp_processor_id());
+	}
 #endif
 }
 #endif /* HIGH_RES_TIMERS */