[private] Re: [PATCH v5 00/16] Introduce virtio-mem <memory/> model

David Hildenbrand david at redhat.com
Tue Sep 21 10:15:02 UTC 2021


On 21.09.21 11:33, David Hildenbrand wrote:
> On 13.09.21 16:52, Michal Privoznik wrote:
>> v4 of:
>>
>> https://listman.redhat.com/archives/libvir-list/2021-June/msg00679.html
>>
>> diff to v4:
>> - Rebased onto current master
>> - Worked in David's suggestions, e.g. rename from <actual/> to
>>     <current/>, implemented offline memory update, implemented --node
>>     argument to virsh update-memory-device, prealloc is OFF and reserve is
>>     ON for virtio-mem
>>
>> Some suggestions are left as future work. For instance:
>> - Don't require memory slots because virtio-mem lives on PCI bus anyway
>> - Allow path backed backend for virtio-mem
>> - support .prealloc for virtio-mem object (not memory-backend-* !)
>>
>>
>> I keep occasionally rebased version on my gitlab:
>>
>> https://gitlab.com/MichalPrivoznik/libvirt/-/commits/virtio_mem_v5/
> 
> 
> Hi Michal,
> 
> I noticed one minor thing:
> 
> If I start a VM with
> 
>       <numa>
>         <cell id='0' cpus='0-7' memory='2097152' unit='KiB'/>
>         <cell id='1' cpus='8-15' memory='2097152' unit='KiB'/>
>       </numa>
>       ...
>       <memory model='virtio-mem'>
>         <target>
>           <size unit='KiB'>16777216</size>
>           <node>0</node>
>           <block unit='KiB'>2048</block>
>           <requested unit='KiB'>2097152</requested>
>         </target>
>         <alias name='ua-virtiomem0'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
>       </memory>
>       <memory model='virtio-mem'>
>         <target>
>           <size unit='KiB'>16777216</size>
>           <node>1</node>
>           <block unit='KiB'>2048</block>
>           <requested unit='KiB'>2097152</requested>
>         </target>
>         <alias name='ua-virtiomem1'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>       </memory>
> 
> 
> I get after it booted up
> 
>     <maxMemory slots='2' unit='KiB'>41943040</maxMemory>
>     <memory unit='KiB'>37748736</memory>
>     <currentMemory unit='KiB'>9437184</currentMemory>
>       <memory model='virtio-mem'>
>         <target>
>           <size unit='KiB'>16777216</size>
>           <node>0</node>
>           <block unit='KiB'>2048</block>
>           <requested unit='KiB'>2097152</requested>
>           <current unit='KiB'>131072</current>
>         </target>
>         <alias name='ua-virtiomem0'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
>       </memory>
>       <memory model='virtio-mem'>
>         <target>
>           <size unit='KiB'>16777216</size>
>           <node>1</node>
>           <block unit='KiB'>2048</block>
>           <requested unit='KiB'>2097152</requested>
>           <current unit='KiB'>2097152</current>
>         </target>
>         <alias name='ua-virtiomem1'/>
>         <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>       </memory>
> 
> Note the "<current unit='KiB'>131072</current>". Inside of the guest, I can see that it really is 2G.
> 
> If I trigger a new "virsh update-memory-device Fedora34", it gets updated
> properly.
> 
> I assume the devices get initialized in the guest in parallel. Could it be that
> libvirt gets confused when there are concurrent notifications about
> two devices or could it be QEMU accidentally swallows some events? I'll investigate the
> latter regarding rate limiting the output in QEMU, maybe something is messed up.

QEMU BUG, will send a fix :)


-- 
Thanks,

David / dhildenb




More information about the libvir-list mailing list