Thread (12 messages) flat view 12 messages, 3 authors, 2021-06-22

Re: [PATCH net-next] ip: avoid OOM kills with large UDP sends over loopback

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-06-22 18:09:51

On Tue, 22 Jun 2021 19:48:43 +0200 Eric Dumazet wrote:
quoted
quoted
What about using 	sock_alloc_send_pskb(... PAGE_ALLOC_COSTLY_ORDER)
(as we did in unix_dgram_sendmsg() for large packets), for SG enabled interfaces ?  
PAGE_ALLOC_COSTLY_ORDER in itself is more of a problem than a solution.
AFAIU the app sends messages primarily above the ~60kB mark, which is
above COSTLY, and those do not trigger OOM kills. All OOM kills we see
have order=3. Checking with Rik and Johannes W that's expected, OOM
killer is only invoked for allocations <= COSTLY, larger ones will just
return NULL and let us deal with it (e.g. by falling back).  
I  really thought alloc_skb_with_frags() was already handling low-memory-conditions.

(alloc_skb_with_frags() is called from sock_alloc_send_pskb())

If it is not, lets fix it, because af_unix sockets will have the same issue ?
af_unix seems to cap at SKB_MAX_ALLOC which is order 2, AFAICT.

Perhaps that's a good enough fix in practice given we see OOMs with
order=3 only?

I'll review callers of alloc_skb_with_frags() and see if they depend 
on the explicit geometry of the skb or we can safely fallback to pages.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help