linux-nvdimm.lists.01.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/8] selective merging of system ram resources
@ 2020-09-11 10:34 David Hildenbrand
  2020-09-11 10:34 ` [PATCH v4 1/8] kernel/resource: make release_mem_region_adjustable() never fail David Hildenbrand
                   ` (8 more replies)
  0 siblings, 9 replies; 25+ messages in thread
From: David Hildenbrand @ 2020-09-11 10:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: virtualization, linux-mm, linux-hyperv, xen-devel, linux-acpi,
	linux-nvdimm, linux-s390, Andrew Morton, David Hildenbrand,
	Andrew Morton, Anton Blanchard, Ard Biesheuvel, Baoquan He,
	Benjamin Herrenschmidt, Boris Ostrovsky, Christian Borntraeger,
	Eric Biederman, Greg Kroah-Hartman, Haiyang Zhang,
	Heiko Carstens, Jason Gunthorpe, Jason Wang, Juergen Gross,
	Julien Grall, Kees Cook, K. Y. Srinivasan, Len Brown

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 by specifying a
new flag for add_memory*(). Patch #5 contains a /proc/iomem example. Only
tested with virtio-mem.

v3 -> v4:
- "mm/memory_hotplug: guard more declarations by CONFIG_MEMORY_HOTPLUG"
-- Fix configs without CONFIG_MEMORY_HOTPLUG with the new mhp_t type
-- Did a buch of cross-compiles with different configs, hope there isn't
   anything I missed.

v2 -> v3:
- "mm/memory_hotplug: prepare passing flags to add_memory() and friends"
-- Use proper __bitwise type for flags
-- Use "MHP_NONE" for empty flags
- Rebased to latest -next, added rb's

v1 -> v2:
- I had another look at v1 after vacation and didn't like it - it felt like
  a hack. So I want forward and added a proper flag to add_memory*(), and
  introduce a clean (non-racy) way to mark System RAM resources mergeable.
- "kernel/resource: move and rename IORESOURCE_MEM_DRIVER_MANAGED"
-- Clean that flag up, felt wrong in the PnP section
- "mm/memory_hotplug: prepare passing flags to add_memory() and friends"
-- Previously sent in other context - decided to keep Wei's ack
- "mm/memory_hotplug: MEMHP_MERGE_RESOURCE to specify merging of System
   RAM resources"
-- Cleaner approach to get the job done by using proper flags and only
   merging the single, specified resource
- "virtio-mem: try to merge system ram resources"
  "xen/balloon: try to merge system ram resources"
  "hv_balloon: try to merge system ram resources"
-- Use the new flag MEMHP_MERGE_RESOURCE, much cleaner

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 (8):
  kernel/resource: make release_mem_region_adjustable() never fail
  kernel/resource: move and rename IORESOURCE_MEM_DRIVER_MANAGED
  mm/memory_hotplug: guard more declarations by CONFIG_MEMORY_HOTPLUG
  mm/memory_hotplug: prepare passing flags to add_memory() and friends
  mm/memory_hotplug: MEMHP_MERGE_RESOURCE to specify merging of System
    RAM resources
  virtio-mem: try to merge system ram resources
  xen/balloon: try to merge system ram resources
  hv_balloon: try to merge system ram resources

 arch/powerpc/platforms/powernv/memtrace.c     |   2 +-
 .../platforms/pseries/hotplug-memory.c        |   2 +-
 drivers/acpi/acpi_memhotplug.c                |   3 +-
 drivers/base/memory.c                         |   3 +-
 drivers/dax/kmem.c                            |   2 +-
 drivers/hv/hv_balloon.c                       |   2 +-
 drivers/s390/char/sclp_cmd.c                  |   2 +-
 drivers/virtio/virtio_mem.c                   |   3 +-
 drivers/xen/balloon.c                         |   2 +-
 include/linux/ioport.h                        |  12 +-
 include/linux/memory_hotplug.h                |  35 +++---
 kernel/kexec_file.c                           |   2 +-
 kernel/resource.c                             | 109 ++++++++++++++----
 mm/memory_hotplug.c                           |  47 +++-----
 mm/sparse.c                                   |   2 +
 15 files changed, 151 insertions(+), 77 deletions(-)

-- 
2.26.2
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

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

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

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11 10:34 [PATCH v4 0/8] selective merging of system ram resources David Hildenbrand
2020-09-11 10:34 ` [PATCH v4 1/8] kernel/resource: make release_mem_region_adjustable() never fail David Hildenbrand
2020-09-22  6:07   ` [PATCH] kernel/resource: Fix use of ternary condition in release_mem_region_adjustable Nathan Chancellor
2020-09-22  6:22     ` David Hildenbrand
2020-10-09  9:24     ` Wei Yang
2020-09-11 10:34 ` [PATCH v4 2/8] kernel/resource: move and rename IORESOURCE_MEM_DRIVER_MANAGED David Hildenbrand
2020-09-11 10:34 ` [PATCH v4 3/8] mm/memory_hotplug: guard more declarations by CONFIG_MEMORY_HOTPLUG David Hildenbrand
2020-09-11 10:34 ` [PATCH v4 4/8] mm/memory_hotplug: prepare passing flags to add_memory() and friends David Hildenbrand
2020-09-11 10:34 ` [PATCH v4 5/8] mm/memory_hotplug: MEMHP_MERGE_RESOURCE to specify merging of System RAM resources David Hildenbrand
2020-09-15  2:43   ` Wei Yang
2020-09-15  7:25     ` David Hildenbrand
2020-09-16 12:51   ` Wei Yang
2020-09-11 10:34 ` [PATCH v4 6/8] virtio-mem: try to merge system ram resources David Hildenbrand
2020-09-16 12:52   ` Wei Yang
2020-09-11 10:34 ` [PATCH v4 7/8] xen/balloon: " David Hildenbrand
2020-09-16 12:52   ` Wei Yang
2020-09-11 10:34 ` [PATCH v4 8/8] hv_balloon: " David Hildenbrand
2020-09-16 12:52   ` Wei Yang
2020-09-16  7:30 ` [PATCH] kernel/resource: make iomem_resource implicit in release_mem_region_adjustable() David Hildenbrand
2020-09-16 10:02   ` Wei Yang
2020-09-16 10:03     ` David Hildenbrand
2020-09-16 12:10       ` Wei Yang
2020-09-16 12:16         ` David Hildenbrand
2020-09-16 12:40           ` Wei Yang
2020-09-17  8:38   ` Pankaj Gupta

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