Hi,
there have been two issues identified when investigating dm-crypt
backed swap recently [1]. The first one looks like a regression from
f9054c70d28b ("mm, mempool: only set __GFP_NOMEMALLOC if there are free
elements") because swapout path can now deplete all the available memory
reserves. The first patch tries to address that issue by dropping
__GFP_NOMEMALLOC only to TIF_MEMDIE tasks.The second issue is that dm writeout path which relies on mempool allocator gets throttled by the direct reclaim in throttle_vm_writeout which just makes the whole memory pressure problem even worse. The patch2 just makes sure that we annotate mempool users to be throttled less by PF_LESS_THROTTLE flag and prevent from throttle_vm_writeout for that path. mempool users are usually the IO path and throttle them less sounds like a reasonable way to go. I do not have any more complicated dm setup available so I would appreciate if dm people (CCed) could give these two a try. Also it would be great to iron out concerns from David. He has posted a deadlock stack trace [2] which has led to f9054c70d28b which is bio allocation lockup because the TIF_MEMDIE process cannot make a forward progress without access to memory reserve. This case should be fixed by patch 1 AFAICS. There are other potential cases when the stuck mempool is called from PF_MEMALLOC context and blocks the oom victim indirectly (over a lock) but I believe those are much less likely and we have the oom reaper to make a forward progress. Sorry of pulling the discussion outside of the original email thread but there were more lines of dicussion there and I felt discussing particualr solution with its justification has a greater chance of moving towards a solution. I am sending this as an RFC because this needs a deep review as there might be other side effects I do not see (especially about patch 2). Any comments, suggestions are welcome. --- [1] http://lkml.kernel.org/r/alpine.lrh.2.02.1607111027080.14...@file01.intranet.prod.int.rdu2.redhat.com [2] http://lkml.kernel.org/r/[email protected] -- dm-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/dm-devel
