Konstantin Khlebnikov
2022-Oct-19 10:53 UTC
[RFC PATCH v5 0/8] Make balloon drivers' memory changes known to the rest of the kernel
On Wed, 19 Oct 2022 at 12:57, Alexander Atanasov < alexander.atanasov at virtuozzo.com> wrote:> Currently balloon drivers (Virtio,XEN, HyperV, VMWare, ...) > inflate and deflate the guest memory size but there is no > way to know how much the memory size is changed by them. > > Make it possible for the drivers to report the values to mm core. > > Display reported InflatedTotal and InflatedFree in /proc/meminfo > and print these values on OOM and sysrq from show_mem(). > > The two values are the result of the two modes the drivers work > with using adjust_managed_page_count or without. > > In earlier versions, there was a notifier for these changes > but after discussion - it is better to implement it in separate > patch series. Since it came out as larger work than initially expected. > > Amount of inflated memory can be used: > - totalram_pages() users working with drivers not using > adjust_managed_page_count > - si_meminfo(..) users can improve calculations > - by userspace software that monitors memory pressure >Sorry, I see no reason for that series. Balloon inflation adjusts totalram_pages. That's enough. There is no reason to know the amount of non-existent ballooned memory inside. Management software which works outside should care about that. For debugging you could get current balloon size from /proc/vmstat (balloon_inflate - balloon_deflate). Also (I guess) /proc/kpageflags has a bit for that. Anyway it's easy to monitor balloon inflation by seeing changes of total memory size.> > Alexander Atanasov (8): > mm: Make a place for a common balloon code > mm: Enable balloon drivers to report inflated memory > mm: Display inflated memory to users > mm: Display inflated memory in logs > drivers: virtio: balloon - report inflated memory > drivers: vmware: balloon - report inflated memory > drivers: hyperv: balloon - report inflated memory > documentation: create a document about how balloon drivers operate > > Documentation/filesystems/proc.rst | 6 + > Documentation/mm/balloon.rst | 138 ++++++++++++++++++ > MAINTAINERS | 4 +- > arch/powerpc/platforms/pseries/cmm.c | 2 +- > drivers/hv/hv_balloon.c | 12 ++ > drivers/misc/vmw_balloon.c | 3 +- > drivers/virtio/virtio_balloon.c | 7 +- > fs/proc/meminfo.c | 10 ++ > .../linux/{balloon_compaction.h => balloon.h} | 18 ++- > lib/show_mem.c | 8 + > mm/Makefile | 2 +- > mm/{balloon_compaction.c => balloon.c} | 19 ++- > mm/migrate.c | 1 - > mm/vmscan.c | 1 - > 14 files changed, 213 insertions(+), 18 deletions(-) > create mode 100644 Documentation/mm/balloon.rst > rename include/linux/{balloon_compaction.h => balloon.h} (91%) > rename mm/{balloon_compaction.c => balloon.c} (94%) > > v4->v5: > - removed notifier > - added documentation > - vmware update after op is done , outside of the mutex > v3->v4: > - add support in hyperV and vmware balloon drivers > - display balloon memory in show_mem so it is logged on OOM and on sysrq > v2->v3: > - added missed EXPORT_SYMBOLS > Reported-by: kernel test robot <lkp at intel.com> > - instead of balloon_common.h just use balloon.h (yes, naming is hard) > - cleaned up balloon.h - remove from files that do not use it and > remove externs from function declarations > v1->v2: > - reworked from simple /proc/meminfo addition > > Cc: Michael S. Tsirkin <mst at redhat.com> > Cc: David Hildenbrand <david at redhat.com> > Cc: Wei Liu <wei.liu at kernel.org> > Cc: Nadav Amit <namit at vmware.com> > Cc: pv-drivers at vmware.com > Cc: Jason Wang <jasowang at redhat.com> > Cc: virtualization at lists.linux-foundation.org > Cc: "K. Y. Srinivasan" <kys at microsoft.com> > Cc: Haiyang Zhang <haiyangz at microsoft.com> > Cc: Stephen Hemminger <sthemmin at microsoft.com> > Cc: Dexuan Cui <decui at microsoft.com> > Cc: linux-hyperv at vger.kernel.org > Cc: Juergen Gross <jgross at suse.com> > Cc: Stefano Stabellini <sstabellini at kernel.org> > Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko at epam.com> > Cc: xen-devel at lists.xenproject.org > > base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780 > -- > 2.31.1 > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.linuxfoundation.org/pipermail/virtualization/attachments/20221019/eb13994a/attachment-0001.html>
Denis V. Lunev
2022-Oct-19 11:06 UTC
[RFC PATCH v5 0/8] Make balloon drivers' memory changes known to the rest of the kernel
On 10/19/22 12:53, Konstantin Khlebnikov wrote:> On Wed, 19 Oct 2022 at 12:57, Alexander Atanasov > <alexander.atanasov at virtuozzo.com> wrote: > > Currently balloon drivers (Virtio,XEN, HyperV, VMWare, ...) > inflate and deflate the guest memory size but there is no > way to know how much the memory size is changed by them. > > Make it possible for the drivers to report the values to mm core. > > Display reported InflatedTotal and InflatedFree in /proc/meminfo > and print these values on OOM and sysrq from show_mem(). > > The two values are the result of the two modes the drivers work > with using adjust_managed_page_count or without. > > In earlier versions, there was a notifier for these changes > but after discussion - it is better to implement it in separate > patch series. Since it came out as larger work than initially > expected. > > Amount of inflated memory can be used: > ?- totalram_pages() users working with drivers not using > ? ? adjust_managed_page_count > ?- si_meminfo(..) users can improve calculations > ?- by userspace software that monitors memory pressure > > > Sorry, I see no reason for that series. > Balloon inflation adjusts totalram_pages. That's enough. >no, they are not at least under some circumstances, f.e. virtio balloon does not do that with VIRTIO_BALLOON_F_DEFLATE_ON_OOM set> There is no reason to know the amount of non-existent ballooned memory > inside. > Management software which works outside should care about that. >The problem comes at the moment when we are running our Linux server inside virtual machine and the customer comes with crazy questions "where our memory?".> For debugging you could get current?balloon?size from /proc/vmstat > (balloon_inflate -?balloon_deflate). > Also (I guess) /proc/kpageflags has a bit for that. > > Anyway it's easy to monitor balloon?inflation by seeing changes of > total memory size.for monitoring - may be. But in order to report total amount there is no interface so far.> > Alexander Atanasov (8): > ? mm: Make a place for a common balloon code > ? mm: Enable balloon drivers to report inflated memory > ? mm: Display inflated memory to users > ? mm: Display inflated memory in logs > ? drivers: virtio: balloon - report inflated memory > ? drivers: vmware: balloon - report inflated memory > ? drivers: hyperv: balloon - report inflated memory > ? documentation: create a document about how balloon drivers operate > > ?Documentation/filesystems/proc.rst? ? ? ? ? ? |? ?6 + > ?Documentation/mm/balloon.rst? ? ? ? ? ? ? ? ? | 138 > ++++++++++++++++++ > ?MAINTAINERS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|? ?4 +- > ?arch/powerpc/platforms/pseries/cmm.c? ? ? ? ? |? ?2 +- > ?drivers/hv/hv_balloon.c? ? ? ? ? ? ? ? ? ? ? ?|? 12 ++ > ?drivers/misc/vmw_balloon.c? ? ? ? ? ? ? ? ? ? |? ?3 +- > ?drivers/virtio/virtio_balloon.c? ? ? ? ? ? ? ?|? ?7 +- > ?fs/proc/meminfo.c? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|? 10 ++ > ?.../linux/{balloon_compaction.h => balloon.h} |? 18 ++- > ?lib/show_mem.c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |? ?8 + > ?mm/Makefile? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|? ?2 +- > ?mm/{balloon_compaction.c => balloon.c}? ? ? ? |? 19 ++- > ?mm/migrate.c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |? ?1 - > ?mm/vmscan.c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|? ?1 - > ?14 files changed, 213 insertions(+), 18 deletions(-) > ?create mode 100644 Documentation/mm/balloon.rst > ?rename include/linux/{balloon_compaction.h => balloon.h} (91%) > ?rename mm/{balloon_compaction.c => balloon.c} (94%) > > v4->v5: > ?- removed notifier > ?- added documentation > ?- vmware update after op is done , outside of the mutex > v3->v4: > ?- add support in hyperV and vmware balloon drivers > ?- display balloon memory in show_mem so it is logged on OOM and > on sysrq > v2->v3: > ?- added missed EXPORT_SYMBOLS > Reported-by: kernel test robot <lkp at intel.com> > ?- instead of balloon_common.h just use balloon.h (yes, naming is > hard) > ?- cleaned up balloon.h - remove from files that do not use it and > ? ?remove externs from function declarations > v1->v2: > ?- reworked from simple /proc/meminfo addition > > Cc: Michael S. Tsirkin <mst at redhat.com> > Cc: David Hildenbrand <david at redhat.com> > Cc: Wei Liu <wei.liu at kernel.org> > Cc: Nadav Amit <namit at vmware.com> > Cc: pv-drivers at vmware.com > Cc: Jason Wang <jasowang at redhat.com> > Cc: virtualization at lists.linux-foundation.org > Cc: "K. Y. Srinivasan" <kys at microsoft.com> > Cc: Haiyang Zhang <haiyangz at microsoft.com> > Cc: Stephen Hemminger <sthemmin at microsoft.com> > Cc: Dexuan Cui <decui at microsoft.com> > Cc: linux-hyperv at vger.kernel.org > Cc: Juergen Gross <jgross at suse.com> > Cc: Stefano Stabellini <sstabellini at kernel.org> > Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko at epam.com> > Cc: xen-devel at lists.xenproject.org > > base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780 > -- > 2.31.1 >