qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC PATCH qemu 0/4] memory: Reduce memory use
@ 2017-09-07  9:20 Alexey Kardashevskiy
  2017-09-07  9:20 ` [Qemu-devel] [RFC PATCH qemu 1/4] memory: Postpone flatview and dispatch tree building till all devices are added Alexey Kardashevskiy
                   ` (4 more replies)
  0 siblings, 5 replies; 28+ messages in thread
From: Alexey Kardashevskiy @ 2017-09-07  9:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alexey Kardashevskiy, David Gibson, Paolo Bonzini,
	Stefan Hajnoczi, Peter Maydell

This was inspired by https://bugzilla.redhat.com/show_bug.cgi?id=1481593

What happens ithere is that every virtio block device creates 2 address
spaces - for modern config space (called "virtio-pci-cfg-as") and
for busmaster (common pci thing, called after the device name,
in my case "virtio-blk-pci").

Each address_space_init() updates topology for every address space.
Every topology update (address_space_update_topology()) creates a new
dispatch tree - AddressSpaceDispatch with nodes (1KB) and
sections (48KB) and destroys the old one.

However the dispatch destructor is postponed via RCU which does not
get a chance to execute until the machine is initialized but before
we get there, memory is not returned to the pool, and this is a lot
of memory which grows n^2.

These patches are trying to address the memory use and boot time
issues but tbh only the first one provides visible outcome.

There are still things to polish and double check the use of RCU,
I'd like to get any feedback before proceeding - is this going
the right way or way too ugly?


This is based on sha1
1ab5eb4efb Peter Maydell "Update version for v2.10.0 release".

Please comment. Thanks.



Alexey Kardashevskiy (4):
  memory: Postpone flatview and dispatch tree building till all devices
    are added
  memory: Prepare for shared flat views
  memory: Share flat views and dispatch trees between address spaces
  memory: Add flat views to HMP "info mtree"

 include/exec/memory-internal.h |   6 +-
 include/exec/memory.h          |  93 +++++++++----
 exec.c                         | 242 +++++++++++++++++++--------------
 hw/alpha/typhoon.c             |   2 +-
 hw/dma/rc4030.c                |   4 +-
 hw/i386/amd_iommu.c            |   2 +-
 hw/i386/intel_iommu.c          |   9 +-
 hw/intc/openpic_kvm.c          |   2 +-
 hw/pci-host/apb.c              |   2 +-
 hw/pci/pci.c                   |   3 +-
 hw/ppc/spapr_iommu.c           |   4 +-
 hw/s390x/s390-pci-bus.c        |   2 +-
 hw/vfio/common.c               |   6 +-
 hw/virtio/vhost.c              |   6 +-
 memory.c                       | 299 +++++++++++++++++++++++++++--------------
 monitor.c                      |   3 +-
 vl.c                           |   4 +
 hmp-commands-info.hx           |   7 +-
 18 files changed, 448 insertions(+), 248 deletions(-)

-- 
2.11.0

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

end of thread, other threads:[~2017-09-12  9:47 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-07  9:20 [Qemu-devel] [RFC PATCH qemu 0/4] memory: Reduce memory use Alexey Kardashevskiy
2017-09-07  9:20 ` [Qemu-devel] [RFC PATCH qemu 1/4] memory: Postpone flatview and dispatch tree building till all devices are added Alexey Kardashevskiy
2017-09-07  9:30   ` Peter Maydell
2017-09-07 14:27     ` Alexey Kardashevskiy
2017-09-07 14:30       ` Peter Maydell
2017-09-08  6:21         ` Alexey Kardashevskiy
2017-09-07  9:20 ` [Qemu-devel] [RFC PATCH qemu 2/4] memory: Prepare for shared flat views Alexey Kardashevskiy
2017-09-09  7:18   ` David Gibson
2017-09-10  9:17     ` Alexey Kardashevskiy
2017-09-07  9:20 ` [Qemu-devel] [RFC PATCH qemu 3/4] memory: Share flat views and dispatch trees between address spaces Alexey Kardashevskiy
2017-09-07 20:53   ` Philippe Mathieu-Daudé
2017-09-07 22:18     ` Alexey Kardashevskiy
2017-09-11  7:40   ` Paolo Bonzini
2017-09-11  9:06     ` Alexey Kardashevskiy
2017-09-11  9:37       ` Paolo Bonzini
2017-09-11 12:08         ` Alexey Kardashevskiy
2017-09-11 15:30           ` Paolo Bonzini
2017-09-12  5:55             ` Alexey Kardashevskiy
2017-09-12  7:12               ` Paolo Bonzini
2017-09-12  9:47                 ` Alexey Kardashevskiy
2017-09-07  9:20 ` [Qemu-devel] [RFC PATCH qemu 4/4] memory: Add flat views to HMP "info mtree" Alexey Kardashevskiy
2017-09-07  9:51 ` [Qemu-devel] [RFC PATCH qemu 0/4] memory: Reduce memory use Dr. David Alan Gilbert
2017-09-07 10:08   ` David Gibson
2017-09-07 14:44   ` Alexey Kardashevskiy
2017-09-07 14:54     ` Dr. David Alan Gilbert
2017-09-08  2:08       ` Alexey Kardashevskiy
2017-09-08  4:04         ` Alexey Kardashevskiy
2017-09-08 11:12         ` Dr. David Alan Gilbert

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