[PATCH v10 0/3] add watchdog_cpumask to help nohz_full

Chris Metcalf
2015-04-30T19:39:34Z

This patch series allows the watchdog to run by default only
on the housekeeping cores when nohz_full is in effect; this
seems to be a good compromise short of turning it off completely
(since the nohz_full cores can't tolerate a watchdog).

To provide customizability, we add /proc/sys/kernel/watchdog_cpumask
so that the set of cores running the watchdog can be tuned to
different values after bootup.

To implement this customizability, we add a new
smpboot_update_cpumask_percpu_thread() API to the smpboot_thread
subsystem that lets us park or unpark "unwanted" threads.

And now that threads can be parked for long periods of time, we tweak
the /proc/<pid>/stat and /proc/<pid>/status code so parked threads
aren't reported as running, which is otherwise confusing.

v10: improved documentation and comments [akpm]
made watchdog_cpumask a static struct cpumask [Don, Uli]
print warning if update_cpumask fails for watchdog [Don]

v9: move cpumask into smpboot_hotplug_thread and don't let the
client initialize it either [Frederic]
use alloc_cpumask_var, not a locked static cpumask [Frederic]
add and use for_each_watchdog_cpu() [Uli]
check alloc_cpumask_var for failure [Chai Wen]

v8: make cpumask only updated by smpboot subsystem [Frederic]
improve documentation in "Documentation/" and in changelog [akpm]

v7: change from valid_cpu() callback to optional cpumask field
park smpboot threads rather than just not creating them

v6: use alloc_cpumask_var() [Sasha Levin]
change from an "exclude" data pointer to a more generic
valid_cpu() callback [Frederic]
add Don's Acked-by

v5: switch from watchdog_exclude to watchdog_cpumask [Frederic]
simplify the smp_hotplug_thread API to watchdog [Frederic]

Chris Metcalf (3):
smpboot: allow excluding cpus from the smpboot threads
watchdog: add watchdog_cpumask sysctl to assist nohz
procfs: treat parked tasks as sleeping for task state

Documentation/lockup-watchdogs.txt | 18 +++++++++++
Documentation/sysctl/kernel.txt | 21 +++++++++++++
fs/proc/array.c | 8 +++++
include/linux/nmi.h | 3 ++
include/linux/smpboot.h | 5 +++
kernel/smpboot.c | 55 +++++++++++++++++++++++++++++++-
kernel/sysctl.c | 7 +++++
kernel/watchdog.c | 64 +++++++++++++++++++++++++++++++++++---
8 files changed, 175 insertions(+), 6 deletions(-)

--
2.1.2