Discussion:
[ORLinux] [PATCH 0/20] mmu: arch/mm: Port OOM changes to arch page fault handlers.
Kautuk Consul
2012-03-20 13:18:14 UTC
Permalink
Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
(mm: retry page fault when blocking on disk transfer) and
commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
(x86,mm: make pagefault killable)

The above commits introduced changes into the x86 pagefault handler
for making the page fault handler retryable as well as killable.

These changes reduce the mmap_sem hold time, which is crucial
during OOM killer invocation.

I was facing hang and livelock problems on my ARM and MIPS boards when
I invoked OOM by running the stress_32k.c test-case attached to this email.

Since both the ARM and MIPS porting chainges were accepted, me and my
co-worker decided to take the initiative to port these changes to all other
MMU based architectures.

Please review and do write back if there is any way I need to
improve/rewrite any
of these patches.

Signed-off-by: Mohd. Faris <mohdfarisq2010 at gmail.com>
Signed-off-by: Kautuk Consul <consul.kautuk at gmail.com>
---
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stress_32k.c
Type: text/x-csrc
Size: 3896 bytes
Desc: not available
URL: <http://lists.openrisc.net/pipermail/linux/attachments/20120320/ac14957d/attachment.c>
Kautuk Consul
2012-03-20 13:34:41 UTC
Permalink
What about arch/um/?
Does UML not need this change?
Oh yes, extremely sorry I accidentally missed that one out.
Mind if I send it separately ?
--
Thanks,
//richard
richard -rw- weinberger
2012-03-20 13:36:06 UTC
Permalink
Post by Kautuk Consul
What about arch/um/?
Does UML not need this change?
Oh yes, extremely sorry I accidentally missed that one out.
Mind if I send it separately ?
No problem.
handle_page_fault() is the function you want to patch. :)
--
Thanks,
//richard
richard -rw- weinberger
2012-03-20 13:30:49 UTC
Permalink
Post by Kautuk Consul
Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
(mm: retry page fault when blocking on disk transfer) and
commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
(x86,mm: make pagefault killable)
The above commits introduced changes into the x86 pagefault handler
for making the page fault handler retryable as well as killable.
These changes reduce the mmap_sem hold time, which is crucial
during OOM killer invocation.
I was facing hang and livelock problems on my ARM and MIPS boards when
I invoked OOM by running the stress_32k.c test-case attached to this email.
Since both the ARM and MIPS porting chainges were accepted, me and my
co-worker decided to take the initiative to port these changes to all other
MMU based architectures.
Please review and do write back if there is any way I need to
improve/rewrite any
of these patches.
What about arch/um/?
Does UML not need this change?
--
Thanks,
//richard
Kautuk Consul
2012-03-31 11:58:04 UTC
Permalink
Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
(mm: retry page fault when blocking on disk transfer) and
commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
(x86,mm: make pagefault killable)

The above commits introduced changes into the x86 pagefault handler
for making the page fault handler retryable as well as killable.

These changes reduce the mmap_sem hold time, which is crucial
during OOM killer invocation.

I was facing hang and livelock problems on my ARM and MIPS boards when
I invoked OOM by running the stress_32k.c test-case attached to this email.

Since both the ARM and MIPS porting changes were accepted, me and my
co-worker decided to take the initiative to port these changes to all other
MMU based architectures.

This is v2 of this patch set as there were some problems with the v1 of this
patchset:
- Whitespace issues as reported by David Miller and Joe Perches
- In 2 of the patches, the write(or equivalent) local variable has
been removed from the
page fault handler because it is not really needed anymore with the
advent of the "flags"
local variable. Thanks to Geert Uytterhoeven for that.
- The powerpc patch for this has been removed as this has already been
done by someone
else for powerpc.

At the moment, 8 of these patches have Acked these patches as valid.
I have included their ACKed-By headers for them in their respective
arch patches.

And thanks to Guan Xuetao for actually testing this out on unicore32.

Rest of the arch owners: Please review these patches.

Signed-off-by: Mohd. Faris <mohdfarisq2010 at gmail.com>
Signed-off-by: Kautuk Consul <consul.kautuk at gmail.com>
---
Kautuk Consul
2012-03-31 12:15:53 UTC
Permalink
Ugh, sorry I forgot to attach the stress_32k.c test-case to this email.

Please find it attached to this one.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stress_32k.c
Type: text/x-csrc
Size: 3896 bytes
Desc: not available
URL: <http://lists.openrisc.net/pipermail/linux/attachments/20120331/f56a4bef/attachment.c>
Loading...