[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v5 0/8] Make balloon drivers' memory changes known to the rest of the kernel
 
- To: Alexander Atanasov <alexander.atanasov@xxxxxxxxxxxxx>
 
- From: Konstantin Khlebnikov <koct9i@xxxxxxxxx>
 
- Date: Wed, 19 Oct 2022 13:53:38 +0300
 
- Cc: kernel@xxxxxxxxxx, kernel test robot <lkp@xxxxxxxxx>, 	"Michael S . Tsirkin" <mst@xxxxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>, Wei Liu <wei.liu@xxxxxxxxxx>, 	Nadav Amit <namit@xxxxxxxxxx>, pv-drivers@xxxxxxxxxx, Jason Wang <jasowang@xxxxxxxxxx>, 	virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx, 	"K. Y. Srinivasan" <kys@xxxxxxxxxxxxx>, Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>, 	Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>, Dexuan Cui <decui@xxxxxxxxxxxxx>, 	linux-hyperv@xxxxxxxxxxxxxxx, Juergen Gross <jgross@xxxxxxxx>, 	Stefano Stabellini <sstabellini@xxxxxxxxxx>, 	Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
 
- Delivery-date: Wed, 19 Oct 2022 10:53:55 +0000
 
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
 
 
 
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@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 
 
  
 
    
     |