From: Sha Zhengju <[email protected]>
Sysctl oom_kill_allocating_task enables or disables killing the OOM-triggering
task in out-of-memory situations, but it only works on overall system-wide oom.
But it's also a useful indication in memcg so we take it into consideration
while oom happening in memcg. Other sysctl such as panic_on_oom has already
been memcg-ware.
Signed-off-by: Sha Zhengju <[email protected]>
---
mm/oom_kill.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 38129e3..2a176af 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -574,6 +574,18 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask)
check_panic_on_oom(CONSTRAINT_MEMCG, gfp_mask, 0, NULL);
limit = mem_cgroup_get_limit(memcg) >> PAGE_SHIFT;
read_lock(&tasklist_lock);
+ if (sysctl_oom_kill_allocating_task &&
+ !oom_unkillable_task(current, memcg, NULL) &&
+ current->mm) {
+ /*
+ * oom_kill_process() needs tasklist_lock held. If it returns
+ * non-zero, current could not be killed so we must fallback to
+ * the tasklist scan.
+ */
+ if (!oom_kill_process(current, gfp_mask, 0, 0, limit, memcg, NULL,
+ "Memory cgroup out of memory (oom_kill_allocating_task)"))
+ goto out;
+ }
retry:
p = select_bad_process(&points, limit, memcg, NULL);
if (!p || PTR_ERR(p) == -1UL)
--
1.7.6.1
________________________________
This email (including any attachments) is confidential and may be legally privileged. If you received this email in error, please delete it immediately and do not copy it or use it for any purpose or disclose its contents to any other person. Thank you.
??????(?????κθ???)???ܺ??л??????ϲ??ܷ??ɱ???????????????ȷ???ռ??ˣ?????????ɾ?????ʼ????벻Ҫ???????ʽ??и??Ʋ??????κ???????;????¶???ʼ?֮???ݡ?лл??
On Tue, 16 Oct 2012, Sha Zhengju wrote:
> From: Sha Zhengju <[email protected]>
>
> Sysctl oom_kill_allocating_task enables or disables killing the OOM-triggering
> task in out-of-memory situations, but it only works on overall system-wide oom.
> But it's also a useful indication in memcg so we take it into consideration
> while oom happening in memcg. Other sysctl such as panic_on_oom has already
> been memcg-ware.
>
You're working on an old kernel, mem_cgroup_out_of_memory() has moved to
mm/memcontrol.c. Please rebase on 3.7-rc1 and send an updated patch,
which otherwise looks good.
On 10/16/2012 02:12 PM, David Rientjes wrote:
> On Tue, 16 Oct 2012, Sha Zhengju wrote:
>
>> From: Sha Zhengju<[email protected]>
>>
>> Sysctl oom_kill_allocating_task enables or disables killing the OOM-triggering
>> task in out-of-memory situations, but it only works on overall system-wide oom.
>> But it's also a useful indication in memcg so we take it into consideration
>> while oom happening in memcg. Other sysctl such as panic_on_oom has already
>> been memcg-ware.
>>
> You're working on an old kernel, mem_cgroup_out_of_memory() has moved to
> mm/memcontrol.c. Please rebase on 3.7-rc1 and send an updated patch,
> which otherwise looks good.
Thanks for reminding! Yes, I cooked it on memcg-devel git repo but a
out-of-date
since-3.2 branch... But I notice the latest branch is since-3.5(not
seeing 3.6/3.7), does
it okay to working on this branch?
Thanks,
Sha
On Tue 16-10-12 14:32:05, Sha Zhengju wrote:
[...]
> Thanks for reminding! Yes, I cooked it on memcg-devel git repo but
> a out-of-date
> since-3.2 branch... But I notice the latest branch is since-3.5(not
> seeing 3.6/3.7), does
> it okay to working on this branch?
The tree has moved to
http://git.kernel.org/?p=linux/kernel/git/mhocko/mm.git;a=summary.
Please use that tree.
--
Michal Hocko
SUSE Labs