diff mbox series

mm/balloon_compaction: suppress allocation warnings

Message ID 20190820091646.29642-1-namit@vmware.com (mailing list archive)
State New, archived
Headers show
Series mm/balloon_compaction: suppress allocation warnings | expand

Commit Message

Nadav Amit Aug. 20, 2019, 9:16 a.m. UTC
There is no reason to print warnings when balloon page allocation fails,
as they are expected and can be handled gracefully.  Since VMware
balloon now uses balloon-compaction infrastructure, and suppressed these
warnings before, it is also beneficial to suppress these warnings to
keep the same behavior that the balloon had before.

Cc: Jason Wang <jasowang@redhat.com>
Signed-off-by: Nadav Amit <namit@vmware.com>
---
 mm/balloon_compaction.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

David Hildenbrand Aug. 21, 2019, 4:05 p.m. UTC | #1
On 20.08.19 11:16, Nadav Amit wrote:
> There is no reason to print warnings when balloon page allocation fails,
> as they are expected and can be handled gracefully.  Since VMware
> balloon now uses balloon-compaction infrastructure, and suppressed these
> warnings before, it is also beneficial to suppress these warnings to
> keep the same behavior that the balloon had before.

I am not sure if that's a good idea. The allocation warnings are usually
the only trace of "the user/admin did something bad because he/she tried
to inflate the balloon to an unsafe value". Believe me, I processed a
couple of such bugreports related to virtio-balloon and the warning were
very helpful for that.

> 
> Cc: Jason Wang <jasowang@redhat.com>
> Signed-off-by: Nadav Amit <namit@vmware.com>
> ---
>  mm/balloon_compaction.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c
> index 798275a51887..26de020aae7b 100644
> --- a/mm/balloon_compaction.c
> +++ b/mm/balloon_compaction.c
> @@ -124,7 +124,8 @@ EXPORT_SYMBOL_GPL(balloon_page_list_dequeue);
>  struct page *balloon_page_alloc(void)
>  {
>  	struct page *page = alloc_page(balloon_mapping_gfp_mask() |
> -				       __GFP_NOMEMALLOC | __GFP_NORETRY);
> +				       __GFP_NOMEMALLOC | __GFP_NORETRY |
> +				       __GFP_NOWARN);
>  	return page;
>  }
>  EXPORT_SYMBOL_GPL(balloon_page_alloc);
>
Nadav Amit Aug. 21, 2019, 4:23 p.m. UTC | #2
> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
> 
> On 20.08.19 11:16, Nadav Amit wrote:
>> There is no reason to print warnings when balloon page allocation fails,
>> as they are expected and can be handled gracefully.  Since VMware
>> balloon now uses balloon-compaction infrastructure, and suppressed these
>> warnings before, it is also beneficial to suppress these warnings to
>> keep the same behavior that the balloon had before.
> 
> I am not sure if that's a good idea. The allocation warnings are usually
> the only trace of "the user/admin did something bad because he/she tried
> to inflate the balloon to an unsafe value". Believe me, I processed a
> couple of such bugreports related to virtio-balloon and the warning were
> very helpful for that.

Ok, so a message is needed, but does it have to be a generic frightening
warning?

How about using __GFP_NOWARN, and if allocation do something like:

  pr_warn(“Balloon memory allocation failed”);

Or even something more informative? This would surely be less intimidating
for common users.
David Hildenbrand Aug. 21, 2019, 4:29 p.m. UTC | #3
On 21.08.19 18:23, Nadav Amit wrote:
>> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
>>
>> On 20.08.19 11:16, Nadav Amit wrote:
>>> There is no reason to print warnings when balloon page allocation fails,
>>> as they are expected and can be handled gracefully.  Since VMware
>>> balloon now uses balloon-compaction infrastructure, and suppressed these
>>> warnings before, it is also beneficial to suppress these warnings to
>>> keep the same behavior that the balloon had before.
>>
>> I am not sure if that's a good idea. The allocation warnings are usually
>> the only trace of "the user/admin did something bad because he/she tried
>> to inflate the balloon to an unsafe value". Believe me, I processed a
>> couple of such bugreports related to virtio-balloon and the warning were
>> very helpful for that.
> 
> Ok, so a message is needed, but does it have to be a generic frightening
> warning?
> 
> How about using __GFP_NOWARN, and if allocation do something like:
> 
>   pr_warn(“Balloon memory allocation failed”);
> 
> Or even something more informative? This would surely be less intimidating
> for common users.
> 

ratelimit would make sense :)

And yes, this would certainly be nicer.
Nadav Amit Aug. 21, 2019, 4:34 p.m. UTC | #4
> On Aug 21, 2019, at 9:29 AM, David Hildenbrand <david@redhat.com> wrote:
> 
> On 21.08.19 18:23, Nadav Amit wrote:
>>> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
>>> 
>>> On 20.08.19 11:16, Nadav Amit wrote:
>>>> There is no reason to print warnings when balloon page allocation fails,
>>>> as they are expected and can be handled gracefully.  Since VMware
>>>> balloon now uses balloon-compaction infrastructure, and suppressed these
>>>> warnings before, it is also beneficial to suppress these warnings to
>>>> keep the same behavior that the balloon had before.
>>> 
>>> I am not sure if that's a good idea. The allocation warnings are usually
>>> the only trace of "the user/admin did something bad because he/she tried
>>> to inflate the balloon to an unsafe value". Believe me, I processed a
>>> couple of such bugreports related to virtio-balloon and the warning were
>>> very helpful for that.
>> 
>> Ok, so a message is needed, but does it have to be a generic frightening
>> warning?
>> 
>> How about using __GFP_NOWARN, and if allocation do something like:
>> 
>>  pr_warn(“Balloon memory allocation failed”);
>> 
>> Or even something more informative? This would surely be less intimidating
>> for common users.
> 
> ratelimit would make sense :)
> 
> And yes, this would certainly be nicer.

Thanks. I will post v2 of the patch.
David Hildenbrand Aug. 21, 2019, 7:13 p.m. UTC | #5
On 21.08.19 18:34, Nadav Amit wrote:
>> On Aug 21, 2019, at 9:29 AM, David Hildenbrand <david@redhat.com> wrote:
>>
>> On 21.08.19 18:23, Nadav Amit wrote:
>>>> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
>>>>
>>>> On 20.08.19 11:16, Nadav Amit wrote:
>>>>> There is no reason to print warnings when balloon page allocation fails,
>>>>> as they are expected and can be handled gracefully.  Since VMware
>>>>> balloon now uses balloon-compaction infrastructure, and suppressed these
>>>>> warnings before, it is also beneficial to suppress these warnings to
>>>>> keep the same behavior that the balloon had before.
>>>>
>>>> I am not sure if that's a good idea. The allocation warnings are usually
>>>> the only trace of "the user/admin did something bad because he/she tried
>>>> to inflate the balloon to an unsafe value". Believe me, I processed a
>>>> couple of such bugreports related to virtio-balloon and the warning were
>>>> very helpful for that.
>>>
>>> Ok, so a message is needed, but does it have to be a generic frightening
>>> warning?
>>>
>>> How about using __GFP_NOWARN, and if allocation do something like:
>>>
>>>  pr_warn(“Balloon memory allocation failed”);
>>>
>>> Or even something more informative? This would surely be less intimidating
>>> for common users.
>>
>> ratelimit would make sense :)
>>
>> And yes, this would certainly be nicer.
> 
> Thanks. I will post v2 of the patch.
> 

As discussed in v2, we already print a warning in virtio-balloon, so I
am fine with this patch.

Reviewed-by: David Hildenbrand <david@redhat.com>
Nadav Amit Aug. 21, 2019, 7:44 p.m. UTC | #6
> On Aug 21, 2019, at 12:13 PM, David Hildenbrand <david@redhat.com> wrote:
> 
> On 21.08.19 18:34, Nadav Amit wrote:
>>> On Aug 21, 2019, at 9:29 AM, David Hildenbrand <david@redhat.com> wrote:
>>> 
>>> On 21.08.19 18:23, Nadav Amit wrote:
>>>>> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
>>>>> 
>>>>> On 20.08.19 11:16, Nadav Amit wrote:
>>>>>> There is no reason to print warnings when balloon page allocation fails,
>>>>>> as they are expected and can be handled gracefully.  Since VMware
>>>>>> balloon now uses balloon-compaction infrastructure, and suppressed these
>>>>>> warnings before, it is also beneficial to suppress these warnings to
>>>>>> keep the same behavior that the balloon had before.
>>>>> 
>>>>> I am not sure if that's a good idea. The allocation warnings are usually
>>>>> the only trace of "the user/admin did something bad because he/she tried
>>>>> to inflate the balloon to an unsafe value". Believe me, I processed a
>>>>> couple of such bugreports related to virtio-balloon and the warning were
>>>>> very helpful for that.
>>>> 
>>>> Ok, so a message is needed, but does it have to be a generic frightening
>>>> warning?
>>>> 
>>>> How about using __GFP_NOWARN, and if allocation do something like:
>>>> 
>>>> pr_warn(“Balloon memory allocation failed”);
>>>> 
>>>> Or even something more informative? This would surely be less intimidating
>>>> for common users.
>>> 
>>> ratelimit would make sense :)
>>> 
>>> And yes, this would certainly be nicer.
>> 
>> Thanks. I will post v2 of the patch.
> 
> As discussed in v2, we already print a warning in virtio-balloon, so I
> am fine with this patch.
> 
> Reviewed-by: David Hildenbrand <david@redhat.com>

Michael,

If it is possible to get it to 5.3, to avoid behavioral change for VMware
balloon users, it would be great.

Thanks,
Nadav
Michael S. Tsirkin Sept. 4, 2019, 10:37 a.m. UTC | #7
On Wed, Aug 21, 2019 at 07:44:33PM +0000, Nadav Amit wrote:
> > On Aug 21, 2019, at 12:13 PM, David Hildenbrand <david@redhat.com> wrote:
> > 
> > On 21.08.19 18:34, Nadav Amit wrote:
> >>> On Aug 21, 2019, at 9:29 AM, David Hildenbrand <david@redhat.com> wrote:
> >>> 
> >>> On 21.08.19 18:23, Nadav Amit wrote:
> >>>>> On Aug 21, 2019, at 9:05 AM, David Hildenbrand <david@redhat.com> wrote:
> >>>>> 
> >>>>> On 20.08.19 11:16, Nadav Amit wrote:
> >>>>>> There is no reason to print warnings when balloon page allocation fails,
> >>>>>> as they are expected and can be handled gracefully.  Since VMware
> >>>>>> balloon now uses balloon-compaction infrastructure, and suppressed these
> >>>>>> warnings before, it is also beneficial to suppress these warnings to
> >>>>>> keep the same behavior that the balloon had before.
> >>>>> 
> >>>>> I am not sure if that's a good idea. The allocation warnings are usually
> >>>>> the only trace of "the user/admin did something bad because he/she tried
> >>>>> to inflate the balloon to an unsafe value". Believe me, I processed a
> >>>>> couple of such bugreports related to virtio-balloon and the warning were
> >>>>> very helpful for that.
> >>>> 
> >>>> Ok, so a message is needed, but does it have to be a generic frightening
> >>>> warning?
> >>>> 
> >>>> How about using __GFP_NOWARN, and if allocation do something like:
> >>>> 
> >>>> pr_warn(“Balloon memory allocation failed”);
> >>>> 
> >>>> Or even something more informative? This would surely be less intimidating
> >>>> for common users.
> >>> 
> >>> ratelimit would make sense :)
> >>> 
> >>> And yes, this would certainly be nicer.
> >> 
> >> Thanks. I will post v2 of the patch.
> > 
> > As discussed in v2, we already print a warning in virtio-balloon, so I
> > am fine with this patch.
> > 
> > Reviewed-by: David Hildenbrand <david@redhat.com>
> 
> Michael,
> 
> If it is possible to get it to 5.3, to avoid behavioral change for VMware
> balloon users, it would be great.
> 
> Thanks,
> Nadav

Just back from vacation, I'll try.
diff mbox series

Patch

diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c
index 798275a51887..26de020aae7b 100644
--- a/mm/balloon_compaction.c
+++ b/mm/balloon_compaction.c
@@ -124,7 +124,8 @@  EXPORT_SYMBOL_GPL(balloon_page_list_dequeue);
 struct page *balloon_page_alloc(void)
 {
 	struct page *page = alloc_page(balloon_mapping_gfp_mask() |
-				       __GFP_NOMEMALLOC | __GFP_NORETRY);
+				       __GFP_NOMEMALLOC | __GFP_NORETRY |
+				       __GFP_NOWARN);
 	return page;
 }
 EXPORT_SYMBOL_GPL(balloon_page_alloc);