From: Alexander Duyck <alexander.h.duyck@linux.intel.com>
To: Nitesh Narayan Lal <nitesh@redhat.com>,
Alexander Duyck <alexander.duyck@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org
Cc: rkrcmar@redhat.com, x86@kernel.org, mingo@redhat.com,
bp@alien8.de, hpa@zytor.com, pbonzini@redhat.com,
tglx@linutronix.de, akpm@linux-foundation.org,
Luiz Capitulino <lcapitulino@redhat.com>,
David Hildenbrand <david@redhat.com>,
Pankaj Gupta <pagupta@redhat.com>
Subject: Re: [RFC PATCH 0/4] kvm: Report unused guest pages to host
Date: Tue, 05 Feb 2019 10:43:20 -0800 [thread overview]
Message-ID: <274c9e23cb0bf947d8dd033bd8a7c14252ba9b85.camel@linux.intel.com> (raw)
In-Reply-To: <697d3769-9320-a632-749e-56de9474bdf0@redhat.com>
On Tue, 2019-02-05 at 12:25 -0500, Nitesh Narayan Lal wrote:
> On 2/4/19 1:15 PM, Alexander Duyck wrote:
> > This patch set provides a mechanism by which guests can notify the host of
> > pages that are not currently in use. Using this data a KVM host can more
> > easily balance memory workloads between guests and improve overall system
> > performance by avoiding unnecessary writing of unused pages to swap.
> >
> > In order to support this I have added a new hypercall to provided unused
> > page hints and made use of mechanisms currently used by PowerPC and s390
> > architectures to provide those hints. To reduce the overhead of this call
> > I am only using it per huge page instead of of doing a notification per 4K
> > page. By doing this we can avoid the expense of fragmenting higher order
> > pages, and reduce overall cost for the hypercall as it will only be
> > performed once per huge page.
> >
> > Because we are limiting this to huge pages it was necessary to add a
> > secondary location where we make the call as the buddy allocator can merge
> > smaller pages into a higher order huge page.
> >
> > This approach is not usable in all cases. Specifically, when KVM direct
> > device assignment is used, the memory for a guest is permanently assigned
> > to physical pages in order to support DMA from the assigned device. In
> > this case we cannot give the pages back, so the hypercall is disabled by
> > the host.
> >
> > Another situation that can lead to issues is if the page were accessed
> > immediately after free. For example, if page poisoning is enabled the
> > guest will populate the page *after* freeing it. In this case it does not
> > make sense to provide a hint about the page being freed so we do not
> > perform the hypercalls from the guest if this functionality is enabled.
> >
> > My testing up till now has consisted of setting up 4 8GB VMs on a system
> > with 32GB of memory and 4GB of swap. To stress the memory on the system I
> > would run "memhog 8G" sequentially on each of the guests and observe how
> > long it took to complete the run. The observed behavior is that on the
> > systems with these patches applied in both the guest and on the host I was
> > able to complete the test with a time of 5 to 7 seconds per guest. On a
> > system without these patches the time ranged from 7 to 49 seconds per
> > guest. I am assuming the variability is due to time being spent writing
> > pages out to disk in order to free up space for the guest.
>
> Hi Alexander,
>
> Can you share the host memory usage before and after your run. (In both
> the cases with your patch-set and without your patch-set)
Here are some snippets from the /proc/meminfo for the system both
before and after the test.
W/O patch
-- Before --
MemTotal: 32881396 kB
MemFree: 21363724 kB
MemAvailable: 25891228 kB
Buffers: 2276 kB
Cached: 4760280 kB
SwapCached: 0 kB
Active: 7166952 kB
Inactive: 1474980 kB
Active(anon): 3893308 kB
Inactive(anon): 8776 kB
Active(file): 3273644 kB
Inactive(file): 1466204 kB
Unevictable: 16756 kB
Mlocked: 16756 kB
SwapTotal: 4194300 kB
SwapFree: 4194300 kB
Dirty: 29812 kB
Writeback: 0 kB
AnonPages: 3896540 kB
Mapped: 75568 kB
Shmem: 10044 kB
-- After --
MemTotal: 32881396 kB
MemFree: 194668 kB
MemAvailable: 51356 kB
Buffers: 24 kB
Cached: 129036 kB
SwapCached: 224396 kB
Active: 27223304 kB
Inactive: 2589736 kB
Active(anon): 27220360 kB
Inactive(anon): 2481592 kB
Active(file): 2944 kB
Inactive(file): 108144 kB
Unevictable: 16756 kB
Mlocked: 16756 kB
SwapTotal: 4194300 kB
SwapFree: 35616 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 29476628 kB
Mapped: 22820 kB
Shmem: 5516 kB
W/ patch
-- Before --
MemTotal: 32881396 kB
MemFree: 26618880 kB
MemAvailable: 27056004 kB
Buffers: 2276 kB
Cached: 781496 kB
SwapCached: 0 kB
Active: 3309056 kB
Inactive: 393796 kB
Active(anon): 2932728 kB
Inactive(anon): 8776 kB
Active(file): 376328 kB
Inactive(file): 385020 kB
Unevictable: 16756 kB
Mlocked: 16756 kB
SwapTotal: 4194300 kB
SwapFree: 4194300 kB
Dirty: 96 kB
Writeback: 0 kB
AnonPages: 2935964 kB
Mapped: 75428 kB
Shmem: 10048 kB
-- After --
MemTotal: 32881396 kB
MemFree: 22677904 kB
MemAvailable: 26543092 kB
Buffers: 2276 kB
Cached: 4205908 kB
SwapCached: 0 kB
Active: 3863016 kB
Inactive: 3768596 kB
Active(anon): 3437368 kB
Inactive(anon): 8772 kB
Active(file): 425648 kB
Inactive(file): 3759824 kB
Unevictable: 16756 kB
Mlocked: 16756 kB
SwapTotal: 4194300 kB
SwapFree: 4194300 kB
Dirty: 1336180 kB
Writeback: 0 kB
AnonPages: 3440528 kB
Mapped: 74992 kB
Shmem: 10044 kB
next prev parent reply other threads:[~2019-02-05 18:43 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-04 18:15 [RFC PATCH 0/4] kvm: Report unused guest pages to host Alexander Duyck
2019-02-04 18:15 ` [RFC PATCH 1/4] madvise: Expose ability to set dontneed from kernel Alexander Duyck
2019-02-04 18:15 ` [RFC PATCH 2/4] kvm: Add host side support for free memory hints Alexander Duyck
2019-02-10 0:44 ` Michael S. Tsirkin
2019-02-11 17:34 ` Alexander Duyck
2019-02-11 17:36 ` Michael S. Tsirkin
2019-02-11 17:41 ` Dave Hansen
2019-02-11 17:48 ` Michael S. Tsirkin
2019-02-11 18:30 ` Alexander Duyck
2019-02-11 19:24 ` Michael S. Tsirkin
2019-02-04 18:15 ` [RFC PATCH 3/4] kvm: Add guest " Alexander Duyck
2019-02-04 19:44 ` Dave Hansen
2019-02-04 20:42 ` Alexander Duyck
2019-02-04 23:00 ` Nadav Amit
2019-02-04 23:37 ` Alexander Duyck
2019-02-05 0:03 ` Nadav Amit
2019-02-05 0:16 ` Alexander Duyck
2019-02-05 1:46 ` Nadav Amit
2019-02-05 18:09 ` Alexander Duyck
2019-02-07 18:21 ` Luiz Capitulino
2019-02-07 18:44 ` Alexander Duyck
2019-02-07 20:02 ` Luiz Capitulino
2019-02-08 21:05 ` Nitesh Narayan Lal
2019-02-08 21:31 ` Alexander Duyck
2019-02-10 0:49 ` Michael S. Tsirkin
2019-02-11 16:31 ` Alexander Duyck
2019-02-11 17:36 ` Michael S. Tsirkin
2019-02-11 18:10 ` Alexander Duyck
2019-02-11 19:54 ` Michael S. Tsirkin
2019-02-11 21:00 ` Alexander Duyck
2019-02-11 22:52 ` Michael S. Tsirkin
[not found] ` <94462313ccd927d25675f69de459456cf066c1a2.camel@linux.intel.com>
2019-02-12 0:34 ` Michael S. Tsirkin
2019-02-11 17:48 ` Dave Hansen
2019-02-11 17:58 ` Michael S. Tsirkin
2019-02-11 18:19 ` Dave Hansen
2019-02-11 19:56 ` Michael S. Tsirkin
2019-02-04 18:15 ` [RFC PATCH 4/4] mm: Add merge page notifier Alexander Duyck
2019-02-04 19:40 ` Dave Hansen
2019-02-04 19:51 ` Alexander Duyck
2019-02-10 0:57 ` Michael S. Tsirkin
2019-02-11 13:30 ` Nitesh Narayan Lal
2019-02-11 14:17 ` Michael S. Tsirkin
2019-02-11 16:24 ` Nitesh Narayan Lal
2019-02-11 17:41 ` Michael S. Tsirkin
2019-02-11 18:09 ` Nitesh Narayan Lal
2019-02-11 6:40 ` Aaron Lu
2019-02-11 15:58 ` Alexander Duyck
2019-02-12 2:09 ` Aaron Lu
2019-02-12 17:20 ` Alexander Duyck
2019-02-04 18:19 ` [RFC PATCH QEMU] i386/kvm: Enable paravirtual unused page hint mechanism Alexander Duyck
2019-02-05 17:25 ` [RFC PATCH 0/4] kvm: Report unused guest pages to host Nitesh Narayan Lal
2019-02-05 18:43 ` Alexander Duyck [this message]
2019-02-07 14:48 ` Nitesh Narayan Lal
2019-02-07 16:56 ` Alexander Duyck
2019-02-10 0:51 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=274c9e23cb0bf947d8dd033bd8a7c14252ba9b85.camel@linux.intel.com \
--to=alexander.h.duyck@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.duyck@gmail.com \
--cc=bp@alien8.de \
--cc=david@redhat.com \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@redhat.com \
--cc=nitesh@redhat.com \
--cc=pagupta@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).