[vfio-users] qemu stuck when hot-add memory to a virtual machine with a device passthrough
Alex Williamson
alex.williamson at redhat.com
Thu Apr 19 13:00:38 UTC 2018
On Thu, 19 Apr 2018 01:37:41 +0000
"Wuzongyong (Euler Dept)" <cordius.wu at huawei.com> wrote:
> > > Hi,
> > >
> > > The qemu process will stuck when hot-add large size memory to the
> > > virtual machine with a device passtrhough.
> > > We found it is too slow to pin and map pages in vfio_dma_do_map.
> > > Is there any method to improve this process?
> >
> > At what size do you start to see problems? The time to map a section of
> > memory should be directly proportional to the size. As the size is
> > increased, it will take longer, but I don't know why you'd reach a point
> > of not making forward progress. Is it actually stuck or is it just taking
> > longer than you want? Using hugepages can certainly help, we still need
> > to pin each PAGE_SIZE page within the hugepage, but we'll have larger
> > contiguous regions and therefore call iommu_map() less frequently. Please
> > share more data. Thanks,
> >
> > Alex
> It just take longer time, instead of actually stuck.
> We found that the problem exist when we hot-added 16G memory. And it will consume
> tens of minutes when we hot-added 1T memory.
Is the stall adding 1TB roughly 64 times the stall adding 16GB or do we
have some inflection in the size vs time curve? There is a cost to
pinning an mapping through the IOMMU, perhaps we can improve that, but
I don't see how we can eliminate it or how it wouldn't be at least
linear compared to the size of memory added without moving to a page
request model, which hardly any hardware currently supports. A
workaround might be to incrementally add memory in smaller chunks which
generate a less noticeable stall. Thanks,
Alex
More information about the vfio-users
mailing list