Re: [RFC PATCH 0/4] (Take 2): transcendent memory ("tmem") for Linux

Anthony Liguori
2009-07-13T20:38:51Z

Chris Mason wrote:
> This depends on the extent to which tmem is integrated into the VM. For
> filesystem usage, the hooks are relatively simple because we already
> have a lot of code sharing in this area. Basically tmem is concerned
> with when we free a clean page and when the contents of a particular
> offset in the file are no longer valid.
>

But filesystem usage is perhaps the least interesting part of tmem.

The VMM already knows which pages in the guest are the result of disk IO
(it's the one that put it there, afterall). It also knows when those
pages have been invalidated (or it can tell based on write-faulting).

The VMM also knows when the disk IO has been rerequested by tracking
previous requests. It can keep the old IO requests cached in memory and
use that to satisfy re-reads as long as the memory isn't needed for
something else. Basically, we have tmem today with kvm and we use it by
default by using the host page cache to do I/O caching (via
cache=writethrough).

The difference between our "tmem" is that instead of providing an
interface where the guest explicitly says, "I'm throwing away this
memory, I may need it later", and then asking again for it, the guest
throws away the page and then we can later satisfy the disk I/O request
that results from re-requesting the page instantaneously.

This transparent approach is far superior too because it enables
transparent sharing across multiple guests. This works well for CoW
images and would work really well if we had a file system capable of
block-level deduplification... :-)

Regards,

Anthony Liguori