From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: Re: sk_page_frag_refill OOM killing spree Date: Tue, 21 May 2013 08:31:20 -0700 Message-ID: <1369150280.3301.230.camel@edumazet-glaptop> References: <20130521122845.GD16412@breakpoint.cc> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, "linux-kernel@vger.kernel.org" To: Florian Westphal Return-path: In-Reply-To: <20130521122845.GD16412@breakpoint.cc> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Tue, 2013-05-21 at 14:28 +0200, Florian Westphal wrote: > Hi Eric, > > seems like sk_page_frag_refill() can cause oom-killer invocation: > > postgres invoked oom-killer: gfp_mask=0x42d0, order=3, oom_score_adj=0 > Pid: 10551, comm: postgres Tainted: G O 3.8.6-5.g613ca40-smp #1 > Call Trace: > [] ? dump_header+0x60/0x191 > [] ? ___ratelimit+0xb2/0xc4 > [] ? oom_kill_process+0x61/0x2d1 > [] ? has_capability_noaudit+0x1c/0x23 > [] ? oom_badness+0x8c/0xef > [] ? out_of_memory+0x203/0x247 > [] ? __alloc_pages_nodemask+0x42b/0x4c3 > [] ? sk_page_frag_refill+0x6a/0xd2 > [] ? tcp_sendmsg+0x3e8/0x7c6 > [] ? inet_sendmsg+0x6b/0x75 > [] ? sock_sendmsg+0x8d/0xa6 > [] ? sys_sendto+0x105/0x130 > [] ? __kunmap_atomic+0x62/0x8a > [] ? __kunmap_atomic+0x7b/0x8a > [] ? __lru_cache_add+0x18/0x47 > [] ? handle_pte_fault+0x745/0x751 > [] ? kmap_atomic_prot+0xd3/0xf1 > [] ? handle_mm_fault+0x112/0x121 > [] ? sys_send+0x37/0x3b > > The system is busy, so, order-3 alloc failure doesn't strike me as odd. > > There are no allocation failures with order != 3. > > Sometimes this can happen in very short sucession, i.e. > and oom-killer did end up zapping 30 processes or so. > > My question is, should sk_page_frag_refill use __GFP_NORETRY, at least > for order 3 requests? Yes, you may be right, but I prefer some mm expertise here, so I CC lkml