From: Qian Cai <cai@lca.pw>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: Eric Dumazet <eric.dumazet@gmail.com>,
"davem@davemloft.net" <davem@davemloft.net>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Michal Hocko <mhocko@kernel.org>
Subject: Re: [PATCH] net/skbuff: silence warnings under memory pressure
Date: Tue, 3 Sep 2019 06:23:05 -0400 [thread overview]
Message-ID: <CAG=TAF40zcUAQToxLNa1Yq33xNTN8HcNumxwmCEBkLD6bpTifQ@mail.gmail.com> (raw)
In-Reply-To: <ee0723b0-1a4e-eef3-8833-c2eb034e5d08@suse.cz>
[-- Attachment #1: Type: text/plain, Size: 2600 bytes --]
On Monday, September 2, 2019, Vlastimil Babka <vbabka@suse.cz> wrote:
> On 8/30/19 5:25 PM, Qian Cai wrote:
> > On Fri, 2019-08-30 at 17:11 +0200, Eric Dumazet wrote:
> >>
> >> On 8/30/19 4:57 PM, Qian Cai wrote:
> >>> When running heavy memory pressure workloads, the system is throwing
> >>> endless warnings below due to the allocation could fail from
> >>> __build_skb(), and the volume of this call could be huge which may
> >>> generate a lot of serial console output and cosumes all CPUs as
> >>> warn_alloc() could be expensive by calling dump_stack() and then
> >>> show_mem().
> >>>
> >>> Fix it by silencing the warning in this call site. Also, it seems
> >>> unnecessary to even print a warning at all if the allocation failed in
> >>> __build_skb(), as it may just retransmit the packet and retry.
> >>>
>
> Well, __GFP_NOWARN would save me from explaining this warning to users
> many times. OTOH usually it's an indication that min_free_kbytes should
> be raised to better cope with network traffic.
I think it is just a matter of time that the continuous memory pressure
will trigger the issue again, so raising min_free_kbytes does not sound a
solution in this case.
>
> >>
> >> Same patches are showing up there and there from time to time.
> >>
> >> Why is this particular spot interesting, against all others not adding
> >> __GFP_NOWARN ?
>
> This one is interesting that it's a GFP_ATOMIC allocation triggered by
> incoming packets, and has a fallback mechanism. I don't recall other so
> notoric ones.
>
> >> Are we going to have hundred of patches adding __GFP_NOWARN at various
> points,
> >> or should we get something generic to not flood the syslog in case of
> memory
> >> pressure ?
> >>
> >
> > From my testing which uses LTP oom* tests. There are only 3 places need
> to be
> > patched. The other two are in IOMMU code for both Intel and AMD. The
> place is
> > particular interesting because it could cause the system with floating
> serial
> > console output for days without making progress in OOM. I suppose it
> ends up in
> > a looping condition that warn_alloc() would end up generating more calls
> into
> > __build_skb() via ksoftirqd.
>
> Regardless of this particular allocation, if the reporting itself makes
> the conditions so much worse, then at least some kind of general
> ratelimit would make sense indeed.
There is a ratelimit in warn_alloc(), but that does not help in this case.
It occurs to me it is not the rate of this allocation failure causes the
issue, but rather the possible recursive and pure volume of __build_skb()
is the issue.
[-- Attachment #2: Type: text/html, Size: 3259 bytes --]
prev parent reply other threads:[~2019-09-03 10:23 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-30 14:57 Qian Cai
2019-08-30 15:11 ` Eric Dumazet
2019-08-30 15:25 ` Qian Cai
2019-08-30 16:15 ` Eric Dumazet
2019-08-30 18:06 ` Qian Cai
2019-09-03 13:22 ` Michal Hocko
2019-09-03 15:42 ` Qian Cai
2019-09-03 18:53 ` Michal Hocko
2019-09-03 21:42 ` Qian Cai
2019-09-04 6:15 ` Michal Hocko
2019-09-04 6:41 ` Sergey Senozhatsky
2019-09-04 6:54 ` Michal Hocko
2019-09-04 7:19 ` Sergey Senozhatsky
2019-09-04 7:43 ` Sergey Senozhatsky
2019-09-04 12:14 ` Qian Cai
2019-09-04 14:48 ` Sergey Senozhatsky
2019-09-04 15:07 ` Qian Cai
2019-09-04 20:42 ` Qian Cai
2019-09-05 8:32 ` Eric Dumazet
2019-09-05 14:09 ` Qian Cai
2019-09-05 15:06 ` Eric Dumazet
2019-09-05 15:14 ` Eric Dumazet
2019-09-05 11:32 ` Sergey Senozhatsky
2019-09-05 16:03 ` Qian Cai
2019-09-05 17:14 ` Steven Rostedt
2019-09-06 2:50 ` Sergey Senozhatsky
2019-09-06 4:32 ` Sergey Senozhatsky
2019-09-06 21:17 ` Qian Cai
2019-09-05 17:23 ` Steven Rostedt
2019-09-06 3:39 ` Sergey Senozhatsky
2019-09-06 15:32 ` Petr Mladek
2019-09-09 1:10 ` Sergey Senozhatsky
2019-09-06 14:55 ` Petr Mladek
2019-09-06 19:51 ` Sergey Senozhatsky
2019-11-14 17:12 ` Qian Cai
2019-11-18 15:27 ` Petr Mladek
2019-11-19 0:41 ` Sergey Senozhatsky
2019-11-19 9:41 ` Petr Mladek
2019-11-19 15:58 ` Qian Cai
2019-11-20 1:30 ` Sergey Senozhatsky
2019-11-20 16:13 ` Petr Mladek
2019-11-21 1:05 ` Sergey Senozhatsky
2019-11-21 9:15 ` Petr Mladek
2019-09-04 7:00 ` Sergey Senozhatsky
2019-09-04 8:25 ` Michal Hocko
2019-09-04 11:59 ` Qian Cai
2019-09-04 12:07 ` Michal Hocko
2019-09-04 12:28 ` Qian Cai
2019-09-04 6:15 ` Michal Hocko
2019-09-02 14:24 ` Vlastimil Babka
2019-09-03 10:23 ` Qian Cai [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAG=TAF40zcUAQToxLNa1Yq33xNTN8HcNumxwmCEBkLD6bpTifQ@mail.gmail.com' \
--to=cai@lca.pw \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox