linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/5] mm/memory_hotplug: selective merging of system ram resources
@ 2020-08-21 10:34 David Hildenbrand
  2020-08-21 10:34 ` [PATCH v1 1/5] kernel/resource: make release_mem_region_adjustable() never fail David Hildenbrand
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: David Hildenbrand @ 2020-08-21 10:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: virtualization, linux-mm, linux-hyperv, xen-devel,
	David Hildenbrand, Andrew Morton, Ard Biesheuvel, Baoquan He,
	Boris Ostrovsky, Dan Williams, Haiyang Zhang, Jason Gunthorpe,
	Jason Wang, Juergen Gross, Julien Grall, Kees Cook,
	K. Y. Srinivasan, Michael S. Tsirkin, Michal Hocko, Pankaj Gupta,
	Roger Pau Monné,
	Stefano Stabellini, Stephen Hemminger, Thomas Gleixner, Wei Liu,
	Wei Yang

This is the follow-up of "[PATCH RFCv1 0/5] mm/memory_hotplug: selective
merging of memory resources" [1]

Some add_memory*() users add memory in small, contiguous memory blocks.
Examples include virtio-mem, hyper-v balloon, and the XEN balloon.

This can quickly result in a lot of memory resources, whereby the actual
resource boundaries are not of interest (e.g., it might be relevant for
DIMMs, exposed via /proc/iomem to user space). We really want to merge
added resources in this scenario where possible.

Resources are effectively stored in a list-based tree. Having a lot of
resources not only wastes memory, it also makes traversing that tree more
expensive, and makes /proc/iomem explode in size (e.g., requiring
kexec-tools to manually merge resources when creating a kdump header. The
current kexec-tools resource count limit does not allow for more than
~100GB of memory with a memory block size of 128MB on x86-64).

Let's allow to selectively merge system ram resources directly below a
specific parent resource. Patch #3 contains a /proc/iomem example. Only
tested with virtio-mem.

Note: This gets the job done and is comparably simple. More complicated
approaches would require introducing IORESOURCE_MERGEABLE and extending our
add_memory*() interfaces with a flag, specifying that merging after adding
succeeded is acceptable. I'd like to avoid that complexity and code churn
for now.

[1] https://lkml.kernel.org/r/20200731091838.7490-1-david@redhat.com

RFC -> v1:
- Switch from rather generic "merge_child_mem_resources()" where a resource
  name has to be specified to "merge_system_ram_resources().
- Smaller comment/documentation/patch description changes/fixes

David Hildenbrand (5):
  kernel/resource: make release_mem_region_adjustable() never fail
  kernel/resource: merge_system_ram_resources() to merge resources after
    hotplug
  virtio-mem: try to merge system ram resources
  xen/balloon: try to merge system ram resources
  hv_balloon: try to merge system ram resources

 drivers/hv/hv_balloon.c     |   3 ++
 drivers/virtio/virtio_mem.c |  14 ++++-
 drivers/xen/balloon.c       |   4 ++
 include/linux/ioport.h      |   7 ++-
 kernel/resource.c           | 101 ++++++++++++++++++++++++++++--------
 mm/memory_hotplug.c         |  22 +-------
 6 files changed, 105 insertions(+), 46 deletions(-)

-- 
2.26.2



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2020-09-08 10:26 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-21 10:34 [PATCH v1 0/5] mm/memory_hotplug: selective merging of system ram resources David Hildenbrand
2020-08-21 10:34 ` [PATCH v1 1/5] kernel/resource: make release_mem_region_adjustable() never fail David Hildenbrand
2020-08-21 10:34 ` [PATCH v1 2/5] kernel/resource: merge_system_ram_resources() to merge resources after hotplug David Hildenbrand
2020-08-31  9:35   ` Pankaj Gupta
2020-09-08 10:26     ` David Hildenbrand
2020-08-21 10:34 ` [PATCH v1 3/5] virtio-mem: try to merge system ram resources David Hildenbrand
2020-08-21 10:34 ` [PATCH v1 4/5] xen/balloon: " David Hildenbrand
2020-09-02 10:15   ` Jürgen Groß
2020-09-02 10:34     ` David Hildenbrand
2020-08-21 10:34 ` [PATCH v1 5/5] hv_balloon: " David Hildenbrand
2020-09-04 17:30   ` Wei Liu
2020-09-08 10:26     ` David Hildenbrand

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).