From: Max Krasnyanskiy <maxk@qualcomm.com>
To: Tejun Heo <htejun@gmail.com>
Cc: rusty@rustcorp.com.au, Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: Module loading/unloading and "The Stop Machine"
Date: Thu, 21 Feb 2008 17:47:12 -0800 [thread overview]
Message-ID: <47BE29A0.6040409@qualcomm.com> (raw)
In-Reply-To: <47BE27AE.8050009@gmail.com>
Tejun Heo wrote:
> Max Krasnyanskiy wrote:
>> Thanks for the info. I guess I missed that from the code. In any case
>> that seems like a pretty heavy refcounting mechanism. In a sense that
>> every time something is loaded or unloaded entire machine freezes,
>> potentially for several milliseconds. Normally it's not a big deal. But
>> once you get more and more CPUs and/or start using realtime apps this
>> becomes a big deal.
>
> Module loading doesn't involve stop_machine last time I checked. It's a
> big deal when unloading a module but it's actually a very good trade off
> because it makes much hotter path (module_get/put) much cheaper. If
> your application can't stand stop_machine, simply don't unload a module.
static struct module *load_module(void __user *umod,
unsigned long len,
const char __user *uargs)
{
...
/* Now sew it into the lists so we can get lockdep and oops
* info during argument parsing. Noone should access us, since
* strong_try_module_get() will fail. */
stop_machine_run(__link_module, mod, NR_CPUS);
...
}
I actually rarely unload modules. The way I notice the problem in first place is when
things started hanging when tun driver was autoloaded or when fs automounts triggered
some auto loading.
These days it's kind hard to have a semi-general purpose machine without module loading :).
Max
next prev parent reply other threads:[~2008-02-22 1:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-08 2:38 Module loading/unloading and "The Stop Machine" Max Krasnyansky
2008-02-08 23:11 ` Max Krasnyanskiy
2008-02-14 4:02 ` Tejun Heo
2008-02-22 1:24 ` Max Krasnyanskiy
2008-02-22 1:38 ` Tejun Heo
2008-02-22 1:47 ` Max Krasnyanskiy [this message]
2008-02-22 1:59 ` Tejun Heo
2008-02-22 2:16 ` Max Krasnyanskiy
2008-02-22 11:53 ` Andi Kleen
2008-02-22 22:41 ` Max Krasnyanskiy
2008-03-04 1:21 ` Rusty Russell
2008-02-14 5:02 ` Jike Song
2008-02-14 5:38 ` Tejun Heo
2008-03-04 3:51 ` Rusty Russell
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=47BE29A0.6040409@qualcomm.com \
--to=maxk@qualcomm.com \
--cc=akpm@linux-foundation.org \
--cc=htejun@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=torvalds@linux-foundation.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