Re: does the semantics of MAP_LOCKED is equal to mlock() function?

From: Michal Hocko
Date: Tue Jan 20 2015 - 07:58:24 EST


On Tue 20-01-15 11:23:40, long.wanglong wrote:
[...]
> 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: http://marc.info/?l=linux-api&m=142122902613316&w=2
>
> "
> 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.

Both mlock and mmap(MAP_LOCKED) are using the same way to fault pages
backing mmaped area so they both are supposed to fail in the same way.
Meaning OOM before the above rework and ENOMEM with the change.
Maybe both of them are using a different exit paths when something is
faulted in and OOM happens for one while not for the other. strace would
tell you that.
--
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/