On 10/19/22 12:53, Konstantin Khlebnikov wrote:
On Wed, 19 Oct 2022 at 12:57, Alexander Atanasov
<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.
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@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>
Cc: David Hildenbrand <david@xxxxxxxxxx>
Cc: Wei Liu <wei.liu@xxxxxxxxxx>
Cc: Nadav Amit <namit@xxxxxxxxxx>
Cc: pv-drivers@xxxxxxxxxx
Cc: Jason Wang <jasowang@xxxxxxxxxx>
Cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
Cc: "K. Y. Srinivasan" <kys@xxxxxxxxxxxxx>
Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
Cc: Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>
Cc: Dexuan Cui <decui@xxxxxxxxxxxxx>
Cc: linux-hyperv@xxxxxxxxxxxxxxx
Cc: Juergen Gross <jgross@xxxxxxxx>
Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780
--
2.31.1