linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Atanasov <alexander.atanasov@virtuozzo.com>
To: Nadav Amit <nadav.amit@gmail.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	David Hildenbrand <david@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	kernel@openvz.org,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org
Subject: Re: [PATCH v4 2/7] Enable balloon drivers to report inflated memory
Date: Thu, 6 Oct 2022 10:34:52 +0300	[thread overview]
Message-ID: <a8ce5c48-3efc-5ea3-6f5c-53b9e33f65c7@virtuozzo.com> (raw)
In-Reply-To: <88EDC41D-408F-4ADF-A933-0A6F36E5F262@gmail.com>

Hello,


On 5.10.22 20:25, Nadav Amit wrote:
> On Oct 5, 2022, at 2:01 AM, Alexander Atanasov <alexander.atanasov@virtuozzo.com> wrote:
> 
>> Add counters to be updated by the balloon drivers.
>> Create balloon notifier to propagate changes.
> 
> I missed the other patches before (including this one). Sorry, but next
> time, please cc me.

You are CCed in the cover letter since the version. I will add CC to you
in the individual patches if you want so.

> 
> I was looking through the series and I did not see actual users of the
> notifier. Usually, it is not great to build an API without users.


You are right. I hope to get some feedback/interest from potential users 
that i mentioned in the cover letter. I will probably split the notifier
in separate series. To make it usefull it will require more changes.
See bellow more about them.


> [snip]
> 
>> +
>> +static int balloon_notify(unsigned long val)
>> +{
>> +	return srcu_notifier_call_chain(&balloon_chain, val, NULL);
> 
> Since you know the inflated_kb value here, why not to use it as an argument
> to the callback? I think casting to (void *) and back is best. But you can
> also provide pointer to the value. Doesn’t it sound better than having
> potentially different notifiers reading different values?

My current idea is to have a struct with current and previous value,
may be change in percents. The actual value does not matter to anyone
but the size of change does. When a user gets notified it can act upon
the change - if it is small it can ignore it , if it is above some 
threshold it can act - if it makes sense for some receiver  is can 
accumulate changes from several notification. Other option/addition is 
to have si_meminfo_current(..) and totalram_pages_current(..) that 
return values adjusted with the balloon values.

Going further - there are few places that calculate something based on 
available memory that do not have sysfs/proc interface for setting 
limits. Most of them work in percents so they can be converted to do 
calculations when they get notification.

The one that have interface for configuration but use memory values can 
be handled in two ways - convert to use percents of what is available or 
extend the notifier to notify userspace which in turn to do calculations 
and update configuration.

> Anyhow, without users (actual notifiers) it’s kind of hard to know how
> reasonable it all is. For instance, is it balloon_notify() supposed to
> prevent further balloon inflating/deflating until the notifier completes?

No, we must avoid that at any cost.

> Accordingly, are callers to balloon_notify() expected to relinquish locks
> before calling balloon_notify() to prevent deadlocks and high latency?

My goal is to avoid any possible impact on performance. Drivers are free 
to delay notifications if they get in the way. (I see that i need to 
move the notification after the semaphore in the vmw driver - i missed 
that - will fix in the next iterration.)
Deadlocks - depends on the users but a few to none will possibly have to 
deal with common locks.


-- 
Regards,
Alexander Atanasov


  reply	other threads:[~2022-10-06  7:35 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20221005090158.2801592-1-alexander.atanasov@virtuozzo.com>
2022-10-05  9:01 ` [PATCH v4 1/7] Make place for common balloon code Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 2/7] Enable balloon drivers to report inflated memory Alexander Atanasov
2022-10-05 17:25   ` Nadav Amit
2022-10-06  7:34     ` Alexander Atanasov [this message]
2022-10-06 21:07       ` Nadav Amit
2022-10-07 10:58         ` RFC " Alexander Atanasov
2022-10-10  6:18           ` Nadav Amit
2022-10-10  7:24             ` Alexander Atanasov
2022-10-10 14:47               ` Nadav Amit
2022-10-11  9:07                 ` Alexander Atanasov
2022-10-11  9:23                   ` David Hildenbrand
2022-10-14 12:50                     ` Alexander Atanasov
2022-10-14 13:01                       ` David Hildenbrand
2022-10-14 13:33                         ` Alexander Atanasov
2022-10-14 13:40                           ` David Hildenbrand
2022-10-14 14:10                             ` Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 3/7] Display inflated memory to users Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 4/7] drivers: virtio: balloon - update inflated memory Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 5/7] Display inflated memory in logs Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 6/7] drivers: vmware: balloon - report inflated memory Alexander Atanasov
2022-10-05  9:01 ` [PATCH v4 7/7] drivers: hyperv: " Alexander Atanasov

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=a8ce5c48-3efc-5ea3-6f5c-53b9e33f65c7@virtuozzo.com \
    --to=alexander.atanasov@virtuozzo.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=kernel@openvz.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mst@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=virtualization@lists.linux-foundation.org \
    /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;
as well as URLs for NNTP newsgroup(s).