From: Zachary Amsden <zach@vmware.com>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, virtualization@lists.osdl.org,
akpm@osdl.org, nickpiggin@yahoo.com.au, frankeh@watson.ibm.com,
rhim@cc.gateh.edu
Subject: Re: [patch 3/9] Guest page hinting: volatile page cache.
Date: Wed, 13 Sep 2006 11:21:34 -0700 [thread overview]
Message-ID: <45084C2E.4060203@vmware.com> (raw)
In-Reply-To: <20060901110948.GD15684@skybase>
Martin Schwidefsky wrote:
> The code added by this patch uses the volatile state for all page cache
> pages, even for pages which are referenced by writable ptes. The host
> needs to be able to check the dirty state of the pages. Since the host
> doesn't know where the page table entries of the guest are located,
> the volatile state as introduced by this patch is only usable on
> architectures with per-page dirty bits (s390 only). For per-pte dirty
> bit architectures some additional code is needed.
>
What do you mean by per-page dirty bits. Do you mean per-page dirty
bits in hardware (s390), in software (Linux), or maintained by the
hypervisor?
> The interesting question is where to put the state transitions between
> the volatile and the stable state. The simple solution is the make a
> page stable whenever a lookup is done or a page reference is derived
> from a page table entry. Attempts to make pages volatile are added at
> strategic points. Now what are the conditions that prevent a page from
> being made volatile? There are 10 conditions:
> 1) The page is reserved. Some sort of special page.
> 2) The page is marked dirty in the struct page. The page content is
> more recent than the data on the backing device. The host cannot
> access the linux internal dirty bit so the page needs to be stable.
> 3) The page is in writeback. The page content is needed for i/o.
> 4) The page is locked. Someone has exclusive access to the page.
>
I'll tend to agree from a heuristical performance point of view, but I
don't see any reason that a locked page can't be made volatile from a
correctness perspective.
> 5) The page is anonymous. Swap cache support needs additional code.
> 6) The page has no mapping. No backing, the page cannot be recreated.
> 7) The page is not uptodate.
> 8) The page has private information. try_to_release_page can fail,
> e.g. in case the private information is journaling data. The discard
> fault need to be able to remove the page.
> 9) The page is already discarded.
> 10) The page map count is not equal to the page reference count - 1.
> The discard fault handler can remove the page cache reference and
> all mappers of a page. It cannot remove the page reference for any
> other user of the page.
>
Does s390 use per physical page permission bits separate from the PTEs?
Because I don't see how you can generate a discard fault otherwise
unless you know where the page table entries of the guest are located,
which you already said you don't. Or perhaps I'm misunderstanding the
meaning of discard fault - I'm taking it to mean a fault which happens
on access to a volatile page that was discarded by the hypervisor - thus
requiring a refresh of all mapping PTEs?
Thanks,
Zach
next prev parent reply other threads:[~2006-09-13 18:21 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-01 11:09 [patch 3/9] Guest page hinting: volatile page cache Martin Schwidefsky
2006-09-01 14:54 ` Dave Hansen
2006-09-01 15:29 ` Martin Schwidefsky
2006-09-01 15:37 ` Dave Hansen
2006-09-01 14:57 ` Dave Hansen
2006-09-01 15:31 ` Martin Schwidefsky
2006-09-01 15:48 ` Andy Whitcroft
2006-09-01 16:04 ` Martin Schwidefsky
2006-09-01 16:18 ` Dave Hansen
2006-09-01 16:25 ` Martin Schwidefsky
2006-09-01 16:37 ` Dave Hansen
2006-09-01 16:56 ` Martin Schwidefsky
2006-09-01 17:16 ` Dave Hansen
2006-09-01 17:42 ` Martin Schwidefsky
2006-09-01 18:03 ` Dave Hansen
2006-09-01 18:04 ` Martin Schwidefsky
2006-09-01 18:23 ` Dave Hansen
2006-09-01 18:31 ` Martin Schwidefsky
2006-09-01 18:41 ` Dave Hansen
2006-09-04 11:21 ` Martin Schwidefsky
2006-09-05 18:27 ` Dave Hansen
2006-09-06 10:49 ` Martin Schwidefsky
2006-09-01 16:29 ` Dave Hansen
2006-09-01 17:02 ` Martin Schwidefsky
2006-09-01 17:05 ` Dave Hansen
2006-09-13 18:21 ` Zachary Amsden [this message]
2006-09-14 8:56 ` Martin Schwidefsky
2006-09-14 9:23 ` Zachary Amsden
2006-09-15 8:36 ` Martin Schwidefsky
-- strict thread matches above, loose matches on Subject: below --
2006-09-15 17:50 Chuck Ebbert
2006-09-18 8:08 ` Martin Schwidefsky
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=45084C2E.4060203@vmware.com \
--to=zach@vmware.com \
--cc=akpm@osdl.org \
--cc=frankeh@watson.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nickpiggin@yahoo.com.au \
--cc=rhim@cc.gateh.edu \
--cc=schwidefsky@de.ibm.com \
--cc=virtualization@lists.osdl.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).