Re: [RFC PATCH v5 0/8] Make balloon drivers' memory changes known to the rest of the kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 19.10.22 13:53, Konstantin Khlebnikov wrote:
On Wed, 19 Oct 2022 at 12:57, Alexander Atanasov <alexander.atanasov@xxxxxxxxxxxxx <mailto:alexander.atanasov@xxxxxxxxxxxxx>> 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.

That is not true in all cases - some do some do not.


There is no reason to know the amount of non-existent ballooned memory inside.

Why? Memory managment is becoming more and more dynamic - to make it easy and accurate you need to know that amount. The kernel itself on boot pre-allocates caches and sets limits based on total ram at boot time when balloon steals half of the memory these initial calculations become very wrong. To redo them correctly these amounts need to be known. The idea of doing this is thru a notifier chain in a separte series.

Management software which works outside should care about that.

For debugging you could get current balloon size from /proc/vmstat (balloon_inflate - balloon_deflate).

Currently you can do that only if using VMWare balloon.

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.

Not all drivers do that - VMWare and virtio (in one case) for example do not. I proposed to unify them but since it can break existing users it was NAKed.


    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@xxxxxxxxx <mailto:lkp@xxxxxxxxx>>
      - 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@xxxxxxxxxx <mailto:mst@xxxxxxxxxx>>
    Cc: David Hildenbrand <david@xxxxxxxxxx <mailto:david@xxxxxxxxxx>>
    Cc: Wei Liu <wei.liu@xxxxxxxxxx <mailto:wei.liu@xxxxxxxxxx>>
    Cc: Nadav Amit <namit@xxxxxxxxxx <mailto:namit@xxxxxxxxxx>>
    Cc: pv-drivers@xxxxxxxxxx <mailto:pv-drivers@xxxxxxxxxx>
    Cc: Jason Wang <jasowang@xxxxxxxxxx <mailto:jasowang@xxxxxxxxxx>>
    Cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
    <mailto:virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx>
    Cc: "K. Y. Srinivasan" <kys@xxxxxxxxxxxxx <mailto:kys@xxxxxxxxxxxxx>>
    Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx
    <mailto:haiyangz@xxxxxxxxxxxxx>>
    Cc: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx
    <mailto:sthemmin@xxxxxxxxxxxxx>>
    Cc: Dexuan Cui <decui@xxxxxxxxxxxxx <mailto:decui@xxxxxxxxxxxxx>>
    Cc: linux-hyperv@xxxxxxxxxxxxxxx <mailto:linux-hyperv@xxxxxxxxxxxxxxx>
    Cc: Juergen Gross <jgross@xxxxxxxx <mailto:jgross@xxxxxxxx>>
    Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx
    <mailto:sstabellini@xxxxxxxxxx>>
    Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx
    <mailto:oleksandr_tyshchenko@xxxxxxxx>>
    Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
    <mailto:xen-devel@xxxxxxxxxxxxxxxxxxxx>

    base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780
-- 2.31.1


--
Regards,
Alexander Atanasov




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux