From: Michael Jeanson Date: Mon, 25 Sep 2017 14:56:20 +0000 (-0400) Subject: Add kmalloc failover to vmalloc X-Git-Tag: v2.10.1~7 X-Git-Url: http://git.lttng.org/?a=commitdiff_plain;h=fd0cebd8c91ded57ea18345e18ec838a32c133ce;hp=fd0cebd8c91ded57ea18345e18ec838a32c133ce;p=lttng-modules.git Add kmalloc failover to vmalloc This patch is based on the kvmalloc helpers introduced in kernel 4.12. It will gracefully failover memory allocations of more than one page to vmalloc for systems under high memory pressure or fragmentation. See Linux kernel commit: commit a7c3e901a46ff54c016d040847eda598a9e3e653 Author: Michal Hocko Date: Mon May 8 15:57:09 2017 -0700 mm: introduce kv[mz]alloc helpers Patch series "kvmalloc", v5. There are many open coded kmalloc with vmalloc fallback instances in the tree. Most of them are not careful enough or simply do not care about the underlying semantic of the kmalloc/page allocator which means that a) some vmalloc fallbacks are basically unreachable because the kmalloc part will keep retrying until it succeeds b) the page allocator can invoke a really disruptive steps like the OOM killer to move forward which doesn't sound appropriate when we consider that the vmalloc fallback is available. As it can be seen implementing kvmalloc requires quite an intimate knowledge if the page allocator and the memory reclaim internals which strongly suggests that a helper should be implemented in the memory subsystem proper. Most callers, I could find, have been converted to use the helper instead. This is patch 6. There are some more relying on __GFP_REPEAT in the networking stack which I have converted as well and Eric Dumazet was not opposed [2] to convert them as well. [1] http://lkml.kernel.org/r/20170130094940.13546-1-mhocko@kernel.org [2] http://lkml.kernel.org/r/1485273626.16328.301.camel@edumazet-glaptop3.roam.corp.google.com This patch (of 9): Using kmalloc with the vmalloc fallback for larger allocations is a common pattern in the kernel code. Yet we do not have any common helper for that and so users have invented their own helpers. Some of them are really creative when doing so. Let's just add kv[mz]alloc and make sure it is implemented properly. This implementation makes sure to not make a large memory pressure for > PAGE_SZE requests (__GFP_NORETRY) and also to not warn about allocation failures. This also rules out the OOM killer as the vmalloc is a more approapriate fallback than a disruptive user visible action. Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers ---