This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: [RFC][PATCH][kprobe] enabling booster on the preemptible kernel, take 2
- From: "bibo mao" <bibo dot mao at gmail dot com>
- To: mingo at redhat dot com
- Cc: anil dot s dot keshavamurthy at intel dot com, ananth at in dot ibm dot com, prasanna at in dot ibm dot com, systemtap at sources dot redhat dot com, soshima at redhat dot com, haoki at redhat dot com, yumiko dot sugita dot yf at hitachi dot com
- Date: Wed, 1 Nov 2006 20:40:14 +0800
- Subject: Re: [RFC][PATCH][kprobe] enabling booster on the preemptible kernel, take 2
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:mime-version:content-type:content-transfer-encoding:content-disposition; b=rOkcl7Rjj3VyhlQSMFuqP51KY7cbgpIiPc3K1bKYRPqsi1QcE/+Dhry8M8ItIQKleiCgiF91Gk1zy8fG4fNxfyFf3fjjTOwxxe5KrDA6Il0mLqb2Dps4wWDuNklOUMk6RLM0EsFCXTv+8G2nhkxpLF3njvIP5bpBNMKYq5uty5Q=
I am not familiar with freeze_processes(), I only view code.
And I write simple program(though buggy) to test:
---------------------------------------
struct task_struct *g, *p;
if (freeze_processes()) {
goto Thaw;
}
do_each_thread(g, p) {
if (frozen(p))
continue;
printk("%s not stopped\n", p->comm );
} while_each_thread(g, p);
Thaw:
thaw_processes();
------------------------------------
the output is this(except for current thread):
ksoftirqd/0 not stopped
watchdog/0 not stopped
events/0 not stopped
khelper not stopped
kthread not stopped
kblockd/0 not stopped
kacpid not stopped
aio/0 not stopped
xfslogd/0 not stopped
xfsdatad/0 not stopped
kpsmoused not stopped
ipw2100/0 not stopped
it seems that many threads are not frozen even freeze_processes
return 0.
thanks
bibo,mao
"Ingo Molnar" <mingo@redhat.com> wrote:
On Tue, 2006-10-31 at 22:17 +0900, Masami Hiramatsu wrote:
OK, I see.
It seems problematic because the softirqd is PF_NOFREEZE and it
can execute most of functions...
I think we need to find a new way to solve this problem.
could you outline the problem to me? freeze_processes() should be a
generic facility to move all kernel processing into a 'known' context of
execution. All the PF_NOFREEZE kernel threads are supposed to do
periodic calls to try_to_freeze(). They should not (and most of the time
they do not) prevent freezing of all state on the system.
am i misunderstanding the problem?
Ingo