On Tue, Jul 08, 2008 at 08:08:22PM -0500, Anthony Liguori wrote:
> 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.

This is Linux's behaviour for all filesystems. There is no error
checking on MAP_POPULATE's attempt to prefault pages.

>>>> +/* 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.

This is just a temporary workaround until a better solution is in place,
as John mentioned.


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to