public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: john cooper <john.cooper@third-harmonic.com>
Cc: kvm@vger.kernel.org, mtosatti@redhat.com, john.cooper@redhat.com
Subject: Re: patch: qemu + hugetlbfs..
Date: Tue, 08 Jul 2008 20:08:22 -0500	[thread overview]
Message-ID: <48740F86.3050306@codemonkey.ws> (raw)
In-Reply-To: <4874051A.8000802@third-harmonic.com>

john cooper wrote:
> I like it even less.  MAP_POPULATE does not fault in physical
> hpages to the map.  Again this was a qemu-side interim bandaid.

Really?  That would seem like a bug in hugetlbfs to me.

>>> +/* we failed to fault in hpage *a, fall back to conventional page 
>>> mapping
>>> + */
>>> +int remap_hpage(void *a, int sz)
>>> +{
>>> +    ASSERT(!(sz & (EXEC_PAGESIZE - 1)));
>>> +    if (munmap(a, sz) < 0)
>>> +    perror("remap_hpage: munmap");
>>> +    else if (mmap(a, sz, PROT_READ|PROT_WRITE,
>>> +    MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0) == MAP_FAILED)
>>> +        perror("remap_hpage: mmap");
>>> +    else
>>> +    return (1);
>>> +    return (0);
>>> +}
>>>   
>>
>> I think this would be simplified with MAP_POPULATE since you can fail 
>> in large chunks of memory instead of potentially having a highly 
>> fragmented set of VMAs.
>
> Here for 4K pages we only need to setup the map.  If we later
> fault on a physically absent 4K page we'll wait if a page isn't
> immediately available.  Rather in the case of a hpage being
> unavailable, we'll terminate.  Note at this point we've effectively
> locked onto whatever hpages we've been able to map as they can't
> be reclaimed from us until we exit.

Right now.  Once we drop references to the large pages, there's nothing 
preventing them from being reclaimed in the future.  That's what I'm 
concerned about.

Regards,

Anthony Liguori

  reply	other threads:[~2008-07-09  1:08 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-08 22:02 patch: qemu + hugetlbfs john cooper
2008-07-08 23:09 ` Anthony Liguori
2008-07-09  0:23   ` john cooper
2008-07-09  1:08     ` Anthony Liguori [this message]
2008-07-09 17:03       ` Marcelo Tosatti
2008-07-09 17:11         ` Anthony Liguori
2008-07-10 16:40           ` john cooper
2008-07-10 17:58             ` Anthony Liguori
2008-07-10 20:16               ` john cooper
2008-07-10 20:47                 ` Anthony Liguori
2008-07-10 21:12                   ` john cooper
2008-07-10 21:38                     ` Anthony Liguori
2008-08-25 23:05                       ` Resend: " john cooper
2008-08-26  8:11                         ` Avi Kivity
2008-08-27  4:13                           ` john cooper
2009-01-16  2:19                         ` john cooper
2009-01-20 10:29                           ` Avi Kivity
2009-01-23 21:21                             ` john cooper
2009-02-05 15:42                               ` Avi Kivity
2009-02-05 16:12                                 ` Marcelo Tosatti
2009-02-05 16:15                                   ` Avi Kivity

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=48740F86.3050306@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=john.cooper@redhat.com \
    --cc=john.cooper@third-harmonic.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@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