linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Dan Magenheimer <dan.magenheimer@oracle.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Avi Kivity <avi@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	jeremy@goop.org, hugh.dickins@tiscali.co.uk, ngupta@vflare.org,
	JBeulich@novell.com, chris.mason@oracle.com,
	kurt.hackel@oracle.com, dave.mccracken@oracle.com,
	npiggin@suse.de, akpm@linux-foundation.org, riel@redhat.com
Subject: RE: Frontswap [PATCH 0/4] (was Transcendent Memory): overview
Date: Thu, 29 Apr 2010 07:42:44 -0700 (PDT)	[thread overview]
Message-ID: <c2744f69-5974-4017-ae33-4244ce0960e2@default> (raw)
In-Reply-To: <20100428055538.GA1730@ucw.cz>

Hi Pavel --

The whole concept of RAM that _might_ be available to the
kernel and is _not_ directly addressable by the kernel takes
some thinking to wrap your mind around, but I assure you
there are very good use cases for it.  RAM owned and managed
by a hypervisor (using controls unknowable to the kernel)
is one example; this is Transcendent Memory.  RAM which
has been compressed is another example; Nitin is working
on this using the frontswap approach because of some
issues that arise with ramzswap (see elsewhere on this
thread).  There are likely more use cases.

So in that context, let me answer your questions, combined
into a single reply.

> > That's a reasonable analogy.  Frontswap serves nicely as an
> > emergency safety valve when a guest has given up (too) much of
> > its memory via ballooning but unexpectedly has an urgent need
> > that can't be serviced quickly enough by the balloon driver.
> 
> wtf? So lets fix the ballooning driver instead?
> 
> There's no reason it could not be as fast as frontswap, right?
> Actually I'd expect it to be faster -- it can deal with big chunks.

If this was possible by fixing the balloon driver, VMware would
have done it years ago.  The problem is that the balloon driver
is acting on very limited information, namely ONLY what THIS
kernel wants; every kernel is selfish and (eventually) uses every
bit of RAM it can get.  This is especially true when swapping
is required (under memory pressure).

So, in general, ballooning is NOT faster because a balloon
request to "get" RAM must wait for some other balloon driver
in some other kernel to "give" RAM.  OR some other entity
must periodically scan every kernels memory and guess at which
kernels are using memory inefficiently and steal it away before
a "needy" kernel asks for it.

While this does indeed "work" today in VMware, if you talk to
VMware customers that use it, many are very unhappy with the
anomalous performance problems that occur.

> > The existing swap API as it stands is inadequate for an efficient
> > synchronous interface (e.g. for swapping to RAM).  Both Nitin
> > and I independently have found this to be true.  But swap-to-RAM
> 
> So... how much slower is swapping to RAM over current interface when
> compared to proposed interface, and how much is that slower than just
> using the memory directly?

Simply copying RAM from one page owned by the kernel to another
page owned by the kernel is pretty pointless as far as swapping
is concerned because it does nothing to reduce memory pressure,
so the comparison is a bit irrelevant.  But...

In my measurements, the overhead of managing "pseudo-RAM" pages
is in the same ballpark as copying the page.  Compression or
deduplication of course has additional costs.  See the
performance results at the end of the following two presentations
for some performance information when "pseudo-RAM" is Transcendent
Memory.

http://oss.oracle.com/projects/tmem/dist/documentation/presentations/TranscendentMemoryLinuxConfAu2010.pdf 

http://oss.oracle.com/projects/tmem/dist/documentation/presentations/TranscendentMemoryXenSummit2010.pdf 

(the latter will be presented later today)

> > I'm a bit confused: What do you mean by 'existing swap API'?
> > Frontswap simply hooks in swap_readpage() and swap_writepage() to
> > call frontswap_{get,put}_page() respectively. Now to avoid a
> hardcoded
> > implementation of these function, it introduces struct frontswap_ops
> > so that custom implementations fronswap get/put/etc. functions can be
> > provided. This allows easy implementation of swap-to-hypervisor,
> > in-memory-compressed-swapping etc. with common set of hooks.
> 
> Yes, and that set of hooks is new API, right?

Well, no, if you define API as "application programming interface"
this is NOT exposed to userland.  If you define API as a new
in-kernel function call, yes, these hooks are a new API, but that
is true of virtually any new code in the kernel.  If you define
API as some new interface between the kernel and a hypervisor,
yes, this is a new API, but it is "optional" at several levels
so that any hypervisor (e.g. KVM) can completely ignore it.

So please let's not argue about whether the code is a "new API"
or not, but instead consider whether the concept is useful or not
and if useful, if there is or is not a cleaner way to implement it.

Thanks,
Dan

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-04-29 14:43 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-22 13:42 Frontswap [PATCH 0/4] (was Transcendent Memory): overview Dan Magenheimer
2010-04-22 15:28 ` Avi Kivity
2010-04-22 15:48   ` Dan Magenheimer
2010-04-22 16:13     ` Avi Kivity
2010-04-22 20:15       ` Dan Magenheimer
2010-04-23  9:48         ` Avi Kivity
2010-04-23 13:47           ` Dan Magenheimer
2010-04-23 13:57             ` Avi Kivity
2010-04-23 14:43               ` Dan Magenheimer
2010-04-23 14:52                 ` Avi Kivity
2010-04-23 15:00                   ` Avi Kivity
2010-04-23 16:26                     ` Dan Magenheimer
2010-04-24 18:25                       ` Avi Kivity
     [not found]                         ` <1c02a94a-a6aa-4cbb-a2e6-9d4647760e91@default4BD43033.7090706@redhat.com>
2010-04-25  0:41                         ` Dan Magenheimer
2010-04-25 12:06                           ` Avi Kivity
2010-04-25 13:12                             ` Dan Magenheimer
2010-04-25 13:18                               ` Avi Kivity
2010-04-28  5:55                               ` Pavel Machek
2010-04-29 14:42                                 ` Dan Magenheimer [this message]
2010-04-29 18:59                                   ` Avi Kivity
2010-04-29 19:01                                     ` Avi Kivity
2010-04-29 18:53                                 ` Avi Kivity
2010-04-30  1:45                                 ` Dave Hansen
2010-04-30  7:13                                   ` Avi Kivity
2010-04-30 15:59                                     ` Dan Magenheimer
2010-04-30 16:08                                       ` Dave Hansen
2010-05-10 16:05                                         ` Martin Schwidefsky
2010-04-30 16:16                                       ` Avi Kivity
     [not found]                                         ` <4BDB18CE.2090608@goop.org4BDB2069.4000507@redhat.com>
     [not found]                                           ` <3a62a058-7976-48d7-acd2-8c6a8312f10f@default20100502071059.GF1790@ucw.cz>
2010-04-30 16:43                                         ` Dan Magenheimer
2010-04-30 17:10                                           ` Dave Hansen
2010-04-30 18:08                                           ` Avi Kivity
2010-04-30 17:52                                         ` Jeremy Fitzhardinge
2010-04-30 18:24                                           ` Avi Kivity
2010-04-30 18:59                                             ` Jeremy Fitzhardinge
2010-05-01  8:28                                               ` Avi Kivity
2010-05-01 17:10                                             ` Dan Magenheimer
2010-05-02  7:11                                               ` Pavel Machek
2010-05-02 15:05                                                 ` Dan Magenheimer
2010-05-02 20:06                                                   ` Pavel Machek
2010-05-02 21:05                                                     ` Dan Magenheimer
2010-05-02  7:57                                               ` Nitin Gupta
2010-05-02 16:06                                                 ` Dan Magenheimer
2010-05-02 16:48                                                   ` Avi Kivity
2010-05-02 17:22                                                     ` Dan Magenheimer
2010-05-03  9:39                                                       ` Avi Kivity
2010-05-03 14:59                                                         ` Dan Magenheimer
2010-05-02 15:35                                               ` Avi Kivity
2010-05-02 17:06                                                 ` Dan Magenheimer
2010-05-03  8:46                                                   ` Avi Kivity
2010-05-03 16:01                                                     ` Dan Magenheimer
2010-05-03 19:32                                                       ` Pavel Machek
2010-04-30 16:04                                     ` Dave Hansen
2010-04-23 15:56                   ` Dan Magenheimer
2010-04-24 18:22                     ` Avi Kivity
2010-04-25  0:30                       ` Dan Magenheimer
2010-04-25 12:11                         ` Avi Kivity
     [not found]                           ` <c5062f3a-3232-4b21-b032-2ee1f2485ff0@default4BD44E74.2020506@redhat.com>
2010-04-25 13:37                           ` Dan Magenheimer
2010-04-25 14:15                             ` Avi Kivity
2010-04-25 15:29                               ` Dan Magenheimer
2010-04-26  6:01                                 ` Avi Kivity
2010-04-26 12:45                                   ` Dan Magenheimer
2010-04-26 13:48                                     ` Avi Kivity
2010-04-27 12:56                                 ` Pavel Machek
2010-04-27 14:32                                   ` Dan Magenheimer
2010-04-29 13:02                                     ` Pavel Machek
2010-04-27 11:52                             ` Valdis.Kletnieks
2010-04-27  0:49                           ` Jeremy Fitzhardinge
2010-04-27 12:55                         ` Pavel Machek
2010-04-27 14:43                           ` Nitin Gupta
2010-04-29 13:04                             ` Pavel Machek
2010-04-24  1:49                   ` Nitin Gupta
2010-04-24 18:27                     ` Avi Kivity
2010-04-25  3:11                       ` Nitin Gupta
2010-04-25 12:16                         ` Avi Kivity
2010-04-25 16:05                           ` Nitin Gupta
2010-04-26  6:06                             ` Avi Kivity
2010-04-26 12:50                               ` Dan Magenheimer
2010-04-26 13:43                                 ` Avi Kivity
2010-04-27  8:29                                   ` Dan Magenheimer
2010-04-27  9:21                                     ` Avi Kivity
2010-04-26 13:47                               ` Nitin Gupta
2010-04-23 16:35             ` Jiahua

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=c2744f69-5974-4017-ae33-4244ce0960e2@default \
    --to=dan.magenheimer@oracle.com \
    --cc=JBeulich@novell.com \
    --cc=akpm@linux-foundation.org \
    --cc=avi@redhat.com \
    --cc=chris.mason@oracle.com \
    --cc=dave.mccracken@oracle.com \
    --cc=hugh.dickins@tiscali.co.uk \
    --cc=jeremy@goop.org \
    --cc=kurt.hackel@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ngupta@vflare.org \
    --cc=npiggin@suse.de \
    --cc=pavel@ucw.cz \
    --cc=riel@redhat.com \
    /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).