On 02.02.21 14:32, Michal Hocko wrote:
On Tue 02-02-21 14:14:09, David Hildenbrand wrote:
[...]
As already expressed, I dislike allowing user space to consume an unlimited
number unmovable/unmigratable allocations. We already have that in some
cases with huge pages (when the arch does not support migration) - but there
we can at least manage the consumption using the whole max/reserved/free/...
infrastructure. In addition, adding arch support for migration shouldn't be
too complicated.
Well, mlock is not too different here as well. Hugepages are arguably an
easier model because it requires an explicit pre-configuration by an
admin. Mlock doesn't have anything like that. Please also note that
while mlock pages are migrateable by default, this is not the case in
general because they can be configured to disalow migration to prevent
from minor page faults as some workloads require that (e.g. RT).
Yeah, however that is a very special case. In most cases mlock() simply
prevents swapping, you still have movable pages you can place anywhere
you like (including on ZONE_MOVABLE).
Another example is ramdisk or even tmpfs (with swap storage depleted or
not configured). Both are PITA from the OOM POV but they are manageable
if people are careful.
Right, but again, special cases - e.g., tmpfs explicitly has to be resized.
If secretmem behaves along those existing models
then we know what to expect at least.
I think secretmem behaves much more like longterm GUP right now
("unmigratable", "lifetime controlled by user space", "cannot go on
CMA/ZONE_MOVABLE"). I'd either want to reasonably well control/limit it
or make it behave more like mlocked pages.
--
Thanks,
David / dhildenb