From: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
To: Lisa Du <cldu@marvell.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
Christoph Lameter <cl@linux.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
Mel Gorman <mel@csn.ul.ie>, Bob Liu <lliubbo@gmail.com>
Subject: Re: Possible deadloop in direct reclaim?
Date: Wed, 31 Jul 2013 22:45:20 -0400 [thread overview]
Message-ID: <51F9CBC0.2020006@gmail.com> (raw)
In-Reply-To: <89813612683626448B837EE5A0B6A7CB3B630BDF99@SC-VEXCH4.marvell.com>
(7/31/13 10:24 PM), Lisa Du wrote:
> Dear Kosaki
> Would you please help to check my comment as below:
>> (7/25/13 9:11 PM), Lisa Du wrote:
>>> Dear KOSAKI
>>> In my test, I didn't set compaction. Maybe compaction is helpful to
>> avoid this issue. I can have try later.
>>> In my mind CONFIG_COMPACTION is an optional configuration
>> right?
>>
>> Right. But if you don't set it, application must NOT use >1 order allocations.
>> It doesn't work and it is expected
>> result.
>> That's your application mistake.
> Dear Kosaki, I have two questions on your explanation:
> a) you said if don't set CONFIG_COMPATION, application must NOT use >1 order allocations, is there any documentation
for this theory?
Sorry I don't understand what "this" mean. I mean, Even though you use desktop or server machine, no compaction kernel
easily makes no order-2 situations.
Then, our in-kernel subsystems don't use order-2 allocations as far as possible.
> b) My order-2 allocation not comes from application, but from do_fork which is in kernel space,
in my mind when a parent process forks a child process, it need to allocate a order-2 memory,
if a) is right, then CONFIG_COMPATION should be a MUST configuration for linux kernel but not optional?
???
fork alloc order-1 memory for stack. Where and why alloc order-2? If it is arch specific code, please
contact arch maintainer.
>>
>>> If we don't use, and met such an issue, how should we deal with
>> such infinite loop?
>>>
>>> I made a change in all_reclaimable() function, passed overnight tests,
>> please help review, thanks in advance!
>>> @@ -2353,7 +2353,9 @@ static bool all_unreclaimable(struct zonelist
>> *zonelist,
>>> continue;
>>> if (!cpuset_zone_allowed_hardwall(zone,
>> GFP_KERNEL))
>>> continue;
>>> - if (!zone->all_unreclaimable)
>>> + if (zone->all_unreclaimable)
>>> + continue;
>>> + if (zone_reclaimable(zone))
>>> return false;
>>
>> Please tell me why you chaned here.
> The original check is once found zone->all_unreclaimable is false, it will return false, then
>it will set did_some_progress non-zero. Then another loop of direct_reclaimed performed.
> But I think zone->all_unreclaimable is not always reliable such as in my case, kswapd go to
> sleep and no one will change this flag. We should also check zone_reclaimalbe(zone) if
> zone->all_unreclaimalbe = 0 to double confirm if a zone is reclaimable; This change also
> avoid the issue you described in below commit:
Please read more older code. Your pointed code is temporary change and I changed back for fixing
bugs.
If you look at the status in middle direct reclaim, we can't avoid race condition from multi direct
reclaim issues. Moreover, if kswapd doesn't awaken, it is a problem. This is a reason why current code
behave as you described.
I agree we should fix your issue as far as possible. But I can't agree your analysis.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-08-01 2:45 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 4:58 Lisa Du
2013-07-23 20:28 ` Christoph Lameter
2013-07-24 1:21 ` Lisa Du
2013-07-25 18:19 ` KOSAKI Motohiro
2013-07-26 1:11 ` Lisa Du
2013-07-29 16:44 ` KOSAKI Motohiro
2013-07-30 1:27 ` Lisa Du
2013-08-01 2:24 ` Lisa Du
2013-08-01 2:45 ` KOSAKI Motohiro [this message]
2013-08-01 4:21 ` Bob Liu
2013-08-03 21:22 ` KOSAKI Motohiro
2013-08-04 23:50 ` Minchan Kim
2013-08-01 5:19 ` Lisa Du
2013-08-01 8:56 ` Russell King - ARM Linux
2013-08-02 1:18 ` Lisa Du
2013-07-29 1:32 ` Lisa Du
2013-07-24 1:18 ` Bob Liu
2013-07-24 1:31 ` Lisa Du
2013-07-24 2:23 ` Lisa Du
2013-07-24 3:38 ` Bob Liu
2013-07-24 5:58 ` Lisa Du
2013-07-25 18:14 ` KOSAKI Motohiro
2013-07-26 1:22 ` Bob Liu
2013-07-29 16:46 ` KOSAKI Motohiro
2013-08-01 5:43 ` Minchan Kim
2013-08-01 6:13 ` Lisa Du
2013-08-01 7:33 ` Minchan Kim
2013-08-01 8:20 ` Lisa Du
2013-08-01 8:42 ` Minchan Kim
2013-08-02 1:03 ` Lisa Du
2013-08-02 2:26 ` Minchan Kim
2013-08-02 2:33 ` Minchan Kim
2013-08-02 3:17 ` Lisa Du
2013-08-02 3:53 ` Minchan Kim
2013-08-02 8:08 ` Lisa Du
2013-08-04 23:47 ` Minchan Kim
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=51F9CBC0.2020006@gmail.com \
--to=kosaki.motohiro@gmail.com \
--cc=cl@linux.com \
--cc=cldu@marvell.com \
--cc=linux-mm@kvack.org \
--cc=lliubbo@gmail.com \
--cc=mel@csn.ul.ie \
/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