From: Andrea Arcangeli <andrea@suse.de>
To: Mauricio Lin <mauriciolin@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Marcelo Tosatti <marcelo.tosatti@cyclades.com>,
Edjard Souza Mota <edjard@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: User space out of memory approach
Date: Sat, 22 Jan 2005 04:04:38 +0100 [thread overview]
Message-ID: <20050122030438.GE11112@dualathlon.random> (raw)
In-Reply-To: <3f250c71050121132713a145e3@mail.gmail.com>
On Fri, Jan 21, 2005 at 05:27:11PM -0400, Mauricio Lin wrote:
> Hi Andrea,
>
> I applied your patch and I am checking your code. It is really a very
> interesting work. I have a question about the function
> __set_current_state(TASK_INTERRUPTIBLE) you put in out_of_memory
> function. Do not you think it would be better put set_current_state
> instead of __set_current_state function? AFAIK the set_current_state
> function is more feasible for SMP systems, right?
set_current_state is needed only when you need to place a memory barrier
after __set_current_state. So it's needed in the usual wait_event loop,
right after registering in the waitqueue. Example:
unsigned long flags;
wait->flags &= ~WQ_FLAG_EXCLUSIVE;
spin_lock_irqsave(&q->lock, flags);
if (list_empty(&wait->task_list))
__add_wait_queue(q, wait);
/*
* don't alter the task state if this is just going to
* queue an async wait queue callback
*/
if (is_sync_wait(wait))
set_current_state(state);
spin_unlock_irqrestore(&q->lock, flags);
and even in the above is needed only because spin_unlock has inclusive
semantics in ia64. In 2.4 there was no unlock at all after
set_current_state and it was like this:
set_current_state(TASK_UNINTERRUPTIBLE);
\
if (condition)
\
break;
\
schedule();
\
The rule of thumb is that if there's nothing between set_current_state
and schedule() then __set_current_state is more efficient and equally
safe to use. And the oom killer path I posted falls in this category,
nothing in between set_current_state and schedule, so no reason to place
memory barries in there.
Hope this helps ;)
next prev parent reply other threads:[~2005-01-22 3:05 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-10 21:43 User space out of memory approach Mauricio Lin
2005-01-10 19:20 ` Marcelo Tosatti
2005-01-10 19:39 ` Marcelo Tosatti
2005-01-10 23:01 ` Mauricio Lin
2005-01-10 22:40 ` Edjard Souza Mota
2005-01-10 20:05 ` Marcelo Tosatti
2005-01-10 23:17 ` Edjard Souza Mota
2005-01-10 23:18 ` Edjard Souza Mota
2005-01-10 23:24 ` Mauricio Lin
2005-01-10 23:30 ` Mauricio Lin
2005-01-11 7:47 ` Marcelo Tosatti
2005-01-11 0:35 ` Thomas Gleixner
2005-01-11 2:03 ` Edjard Souza Mota
2005-01-11 8:44 ` Thomas Gleixner
2005-01-11 8:58 ` Andrea Arcangeli
2005-01-11 7:48 ` Marcelo Tosatti
2005-01-11 9:08 ` Andrew Morton
2005-01-11 9:19 ` Andrea Arcangeli
2005-01-11 9:27 ` Andrew Morton
2005-01-11 9:20 ` Edjard Souza Mota
2005-01-11 9:30 ` Thomas Gleixner
2005-01-11 9:56 ` Andrea Arcangeli
2005-01-11 10:05 ` Edjard Souza Mota
2005-01-11 10:39 ` Thomas Gleixner
2005-01-11 10:44 ` Andrea Arcangeli
2005-01-11 14:56 ` Edjard Souza Mota
2005-01-11 15:27 ` Ilias Biris
2005-01-11 10:00 ` Edjard Souza Mota
2005-01-11 10:36 ` Thomas Gleixner
2005-01-11 16:32 ` Alan Cox
2005-01-11 19:16 ` Ilias Biris
2005-01-11 20:46 ` Ilias Biris
2005-01-11 20:57 ` Thomas Gleixner
2005-01-12 9:31 ` Edjard Souza Mota
2005-01-12 11:19 ` Thomas Gleixner
2005-01-12 12:12 ` Edjard Souza Mota
2005-01-13 15:36 ` Alan Cox
2005-01-16 10:06 ` Edjard Souza Mota
2005-01-16 21:10 ` Alan Cox
2005-01-17 10:16 ` Thomas Gleixner
2005-01-11 21:35 ` Denis Vlasenko
2005-01-11 20:40 ` Thomas Gleixner
2005-01-11 7:42 ` Marcelo Tosatti
2005-01-11 10:51 ` Thomas Gleixner
2005-01-11 11:03 ` Andrea Arcangeli
2005-01-11 8:38 ` Andrea Arcangeli
2005-01-21 21:27 ` Mauricio Lin
2005-01-21 21:45 ` Mauricio Lin
2005-01-22 3:32 ` Andrea Arcangeli
2005-01-25 21:13 ` Mauricio Lin
2005-01-25 21:39 ` Thomas Gleixner
2005-01-26 0:11 ` Mauricio Lin
2005-01-26 0:49 ` Andrea Arcangeli
2005-01-26 14:03 ` Mauricio Lin
2005-01-27 18:54 ` Mauricio Lin
2005-01-27 22:11 ` Andrea Arcangeli
2005-01-27 22:29 ` Andrew Morton
2005-01-27 22:58 ` Andrea Arcangeli
2005-01-27 23:35 ` Andrew Morton
2005-01-28 0:15 ` Andrea Arcangeli
2005-01-28 13:58 ` Mauricio Lin
2005-01-28 15:21 ` Mauricio Lin
2005-01-28 15:29 ` Andrea Arcangeli
2005-01-26 7:26 ` Thomas Gleixner
2005-01-22 3:04 ` Andrea Arcangeli [this message]
[not found] <fa.lcmt90h.1j1scpn@ifi.uio.no>
[not found] ` <fa.ht4gei4.1g5odia@ifi.uio.no>
2005-01-16 16:28 ` Bodo Eggert
2005-01-18 13:15 ` Edjard Souza Mota
2005-01-19 6:18 ` Bodo Eggert
2005-01-20 3:20 ` Edjard Souza Mota
2005-01-20 5:00 ` Bodo Eggert
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=20050122030438.GE11112@dualathlon.random \
--to=andrea@suse.de \
--cc=akpm@osdl.org \
--cc=edjard@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo.tosatti@cyclades.com \
--cc=mauriciolin@gmail.com \
--cc=tglx@linutronix.de \
/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.