On 12/08/22 12:48, Gupta, Pankaj wrote:
> 
>>>>>>
>>>>>> However, fallocate() preallocates full guest memory before starting the 
>>>>>> guest.
>>>>>> With this behaviour guest memory is *not* demand pinned. Is there a way 
>>>>>> to
>>>>>> prevent fallocate() from reserving full guest memory?
>>>>>
>>>>> Isn't the pinning being handled by the corresponding host memory backend 
>>>>> with mmu > notifier and architecture support while doing the memory 
>>>>> operations e.g page> migration and swapping/reclaim (not supported 
>>>>> currently AFAIU). But yes, we need> to allocate entire guest memory with 
>>>>> the new flags MEMFILE_F_{UNMOVABLE, UNRECLAIMABLE etc}.
>>>>
>>>> That is correct, but the question is when does the memory allocated, as 
>>>> these flags are set,
>>>> memory is neither moved nor reclaimed. In current scenario, if I start a 
>>>> 32GB guest, all 32GB is
>>>> allocated.
>>>
>>> I guess so if guest memory is private by default.
>>>
>>> Other option would be to allocate memory as shared by default and
>>> handle on demand allocation and RMPUPDATE with page state change event. But 
>>> still that would be done at guest boot time, IIUC.
>>
>> Sorry! Don't want to hijack the other thread so replying here.
>>
>> I thought the question is for SEV SNP. For SEV, maybe the hypercall with the 
>> page state information can be used to allocate memory as we use it or 
>> something like quota based memory allocation (just thinking).
> 
> But all this would have considerable performance overhead (if by default 
> memory is shared) and used mostly at boot time. 

> So, preallocating memory (default memory private) seems better approach for 
> both SEV & SEV SNP with later page management (pinning, reclaim) taken care 
> by host memory backend & architecture together.

I am not sure how will pre-allocating memory help, even if guest would not use 
full memory it will be pre-allocated. Which if I understand correctly is not 
expected.

Regards
Nikunj

Reply via email to