LKML Archive on
help / color / mirror / Atom feed
From: "long.wanglong" <>
To: Michal Hocko <>
Cc: <>, <>,
	<>, <>,
	<>, <>,
	"" <>,
Subject: Re: does the semantics of MAP_LOCKED is equal to mlock() function?
Date: Tue, 20 Jan 2015 11:23:40 +0800	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>

On 2015/1/19 19:01, Michal Hocko wrote:
> On Mon 19-01-15 10:46:56, Michal Hocko wrote:
> [...]
>>> testcase 2: mmap without MAP_LOCKED flag and the call mlock (memsize = 8192)
>>> 185                 p = mmap(NULL, memsize, PROT_WRITE | PROT_READ,
>>> 186                          MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
>>> 187                 if (p == MAP_FAILED)
>>> 188                         err(1, "mmap(lock) failed");
>>> 189
>>> 190                 if (mlock(p, memsize) == -1)
>>> 191                         err(1, "mlock failed")
>>> expect: invoke OOM killer.
>>> result: invoke OOM killer.
> Are you sure about this? memcg OOM killer shouldn't trigger even from
> mlock path. It should just lead to ENOMEM. If you see the OOM killer
> then it is probably coming from a page fault from a different source.
> strace of your test would tell you more.
hi, Michal Hocko

sorry for the wrong description in the email. i run the two testcase in kernel v3.10.63, not
the latest kernel.

in kernel v3.18, the two testcases can not invoke OOM killer.

The problem comes from the LTP tests, because the v3.10.61 lts apply the following patch:

f8a5117916dd2871c056963bf5ee0d1101c10099 mm: memcg: handle non-error OOM situations more gracefully
f79d6a468980516cbfb9e01313c846b82b9d2e7e mm: memcg: do not trap chargers with full callstack on OOM
7a147e0c45a8fa198ade4128bdcbf8592f48843e mm: memcg: rework and document OOM waiting and wakeup
11f34787b50ce71f66b85ad8790beaa5eee3f897 mm: memcg: enable memcg OOM killer only for user faults

as you said in:

The primary issue is that mmap doesn't report a failure if MAP_LOCKED fails to populate the area. Is
this the correct/expected behavior?

There is another problem:

in kernel v3.10.63  testcase 1 can not invoke OOM, but testcase2 can invoke OOM.
in kernel v3.18     both testcase 1 and testcase 2 can not invoke OOM.

in kernel v3.10.63, why testcase2  can invoke OOM killer?


Best Regards
Wang Long

  reply	other threads:[~2015-01-20  3:24 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-19  6:17 long.wanglong
2015-01-19  9:46 ` Michal Hocko
2015-01-19 11:01   ` Michal Hocko
2015-01-20  3:23     ` long.wanglong [this message]
2015-01-20 12:58       ` Michal Hocko

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \ \ \ \ \ \
    --subject='Re: does the semantics of MAP_LOCKED is equal to mlock() function?' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).