public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: lkml <linux-kernel@vger.kernel.org>
Cc: x86-ml <x86@kernel.org>, Peter Zijlstra <peterz@infradead.org>,
	Mel Gorman <mgorman@suse.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mike Galbraith <mgalbraith@suse.de>
Subject: Slow down stupid pounders
Date: Tue, 6 May 2014 12:29:24 +0200	[thread overview]
Message-ID: <20140506102924.GA25013@pd.tnic> (raw)

Hi,

so I'm getting sick'n'tired of all those bug reports of people pounding
cpu hotplug with stupid scripts.

* We know cpu hotplug is fragile/buggy/crap/needs proper rewrite.

* Stupid hotplugging script doesn't resemble any real use case - go use
a real benchmark/stress test to trigger bugs.

So if we can't make pounders stop jerking off, let's make it
uninterestingly slow. Stupid patch below, it might be completely idiotic
to do it this way but at least starts the discussion about this being a
really annoying issue which needs some sort of dealing with.

I dunno, we can make it configurable (which will probably defeat its
purpose partially), we can do some more fancy ratelimiting, per cpu,
whatever... we'll see.

Opinions, flames?

---
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c
index 006b1bc5297d..615c7af767ed 100644
--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -40,6 +40,11 @@ static void change_cpu_under_node(struct cpu *cpu,
 	cpu->node_id = to_nid;
 }
 
+static void delay_hotplug(void)
+{
+	schedule_timeout_uninterruptible(msecs_to_jiffies(MSEC_PER_SEC));
+}
+
 static int __ref cpu_subsys_online(struct device *dev)
 {
 	struct cpu *cpu = container_of(dev, struct cpu, dev);
@@ -47,6 +52,8 @@ static int __ref cpu_subsys_online(struct device *dev)
 	int from_nid, to_nid;
 	int ret;
 
+	delay_hotplug();
+
 	from_nid = cpu_to_node(cpuid);
 	if (from_nid == NUMA_NO_NODE)
 		return -ENODEV;
@@ -65,6 +72,8 @@ static int __ref cpu_subsys_online(struct device *dev)
 
 static int cpu_subsys_offline(struct device *dev)
 {
+	delay_hotplug();
+
 	return cpu_down(dev->id);
 }
 

-- 
Regards/Gruss,
    Boris.

Sent from a fat crate under my desk. Formatting is fine.
--

             reply	other threads:[~2014-05-06 10:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-06 10:29 Borislav Petkov [this message]
2014-05-06 11:08 ` Slow down stupid pounders Steven Rostedt
2014-05-06 11:22   ` Borislav Petkov
2014-05-06 12:42 ` Mike Galbraith
2014-05-06 15:08 ` Mike Galbraith
2014-05-06 16:10   ` Borislav Petkov
2014-06-14 20:32     ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140506102924.GA25013@pd.tnic \
    --to=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgalbraith@suse.de \
    --cc=mgorman@suse.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox