From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Oleg Nesterov <oleg@tv-sign.ru>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>,
linux-pm@lists.linux-foundation.org, Pavel Machek <pavel@ucw.cz>,
Miklos Szeredi <miklos@szeredi.hu>
Subject: Re: Re: [RFC][PATCH -mm 5/6] Freezer: Use freezing timeout more efficiently
Date: Tue, 10 Jul 2007 21:54:02 +0200 [thread overview]
Message-ID: <200707102154.03531.rjw@sisk.pl> (raw)
In-Reply-To: <20070710185059.GA92@tv-sign.ru>
On Tuesday, 10 July 2007 20:50, Oleg Nesterov wrote:
> On 07/10, Rafael J. Wysocki wrote:
> >
> > + if (todo && freeze_user_space && !time_after(jiffies, end_time)) {
> > + /*
> > + * Some tasks have not been able to freeze. They might be stuck
> > + * in TASK_UNINTERRUPTIBLE waiting for the frozen tasks. Try to
> > + * thaw the tasks that have frozen without clearing the freeze
> > + * requests of the remaining tasks and repeat.
> > + */
> > + read_lock(&tasklist_lock);
> > + do_each_thread(g, p) {
> > + if (frozen(p)) {
> > + p->flags &= ~PF_FROZEN;
> > + wake_up_process(p);
>
> I just noticed we don't use thaw_process(), this means that the retry doesn't
> play well with wait_event_freezable() introduced in the previous patch.
>
> Suppose that kthread_stop(T) hangs and blocks the freezer, and T does
The retry mechanism only applies to user land processes. :-)
> while (!kthread_should_stop()) {
> wait_event_freezable(...);
> do_something();
> }
>
> and it is freezed. We clear PF_FROZEN but not TIF_FREEZE, wait_event_freezable
> checks freezing() and goes to refrigerator again.
PF_FROZEN and TIF_FREEZE are mutually exclusive as long as the thawing is
not racing with refrigerator(). I don't think that this is of concern here, but we can take
task_lock() in the freezing loop.
> Another problem is that we only count UNINTERRUPTIBLE tasks to make a decision
> about retry, while wait_event_freezable() sleeps NTERRUPTIBLE.
The retry thing doesn't cover kernel threads, because they aren't supposed to
block the freezer. They are supposed to freeze voluntarily and to know
_exactly_ what they are doing.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
next prev parent reply other threads:[~2007-07-10 19:54 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-09 20:29 [RFC][PATCH -mm 0/6] Freezer update Rafael J. Wysocki
2007-07-09 20:31 ` [RFC][PATCH -mm 1/6] Freezer: Do not sync filesystems Rafael J. Wysocki
2007-07-09 23:12 ` Pavel Machek
2007-07-10 0:31 ` Matthew Garrett
2007-07-09 20:32 ` [RFC][PATCH -mm 2/6] Freezer: Do not send signals to kernel threads Rafael J. Wysocki
2007-07-09 23:42 ` Pavel Machek
2007-07-10 5:57 ` Rafael J. Wysocki
2007-07-10 15:00 ` Oleg Nesterov
2007-07-10 21:08 ` Rafael J. Wysocki
2007-07-10 21:22 ` Oleg Nesterov
2007-07-09 20:33 ` [RFC][PATCH -mm 3/6] Freezer: Be more verbose Rafael J. Wysocki
2007-07-09 23:46 ` Pavel Machek
2007-07-10 6:01 ` Rafael J. Wysocki
2007-07-10 15:05 ` Pavel Machek
2007-07-09 20:34 ` [RFC][PATCH -mm 4/6] Freezer: Prevent new tasks from inheriting TIF_FREEZE set Rafael J. Wysocki
2007-07-09 23:21 ` Pavel Machek
2007-07-10 6:03 ` Rafael J. Wysocki
2007-07-10 15:05 ` Pavel Machek
2007-07-09 20:38 ` [RFC][PATCH -mm 5/6] Freezer: Use freezing timeout more efficiently Rafael J. Wysocki
2007-07-09 23:34 ` Pavel Machek
2007-07-10 6:09 ` Rafael J. Wysocki
2007-07-10 10:04 ` Rafael J. Wysocki
2007-07-10 17:17 ` Oleg Nesterov
2007-07-10 20:30 ` Rafael J. Wysocki
2007-07-10 20:55 ` Oleg Nesterov
2007-07-10 21:15 ` Rafael J. Wysocki
2007-07-10 18:50 ` Oleg Nesterov
2007-07-10 19:54 ` Rafael J. Wysocki [this message]
2007-07-10 20:35 ` Oleg Nesterov
2007-07-10 20:57 ` Rafael J. Wysocki
2007-07-10 21:13 ` bogosort (was Re: Re: [RFC][PATCH -mm 5/6] Freezer: Use freezing timeout more efficiently) Pavel Machek
2007-07-10 21:38 ` Oleg Nesterov
2007-07-10 21:39 ` Rafael J. Wysocki
2007-07-10 21:39 ` Pavel Machek
2007-07-10 22:07 ` Rafael J. Wysocki
2007-07-10 22:21 ` Pavel Machek
2007-07-23 8:04 ` Pavel Machek
2007-07-23 19:16 ` Rafael J. Wysocki
2007-07-09 20:41 ` [RFC][PATCH -mm 6/6] Freezer: Document relationship with memory shrinking Rafael J. Wysocki
2007-07-09 23:23 ` 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=200707102154.03531.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=linux-pm@lists.linux-foundation.org \
--cc=miklos@szeredi.hu \
--cc=mjg59@srcf.ucam.org \
--cc=oleg@tv-sign.ru \
--cc=pavel@ucw.cz \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.