[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/2] x86/dom0: improve paging memory usage calculations
On Mon, Dec 10, 2018 at 11:33:28AM +0100, Roger Pau Monné wrote: > On Thu, Dec 06, 2018 at 12:42:15PM +0000, Wei Liu wrote: > > On Wed, Dec 05, 2018 at 03:55:00PM +0100, Roger Pau Monne wrote: > > > Current approximation of paging memory usage is based on the required > > > amount when running in shadow mode and doesn't take into account the > > > memory required by the IOMMU page tables. > > > > > > Fix this by introducing a function to calculate the amount of memory > > > required by HAP/IOMMU page tables. The formula used to calculate such > > > approximation is based on the pessimistic approach that each 4KB > > > memory chunk will use 8 bytes of page table memory. Note that this > > > approximation might need further tuning based on testing on different > > > systems. > > > > > > Also fix the calculation of the required paging related memory in > > > dom0_compute_nr_pages to take into account the paging implementation > > > (shadow or HAP) and whether the IOMMU pages tables are shared with the > > > HAP page tables. > > > > > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > > > --- > > > Cc: Jan Beulich <jbeulich@xxxxxxxx> > > > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > > > Cc: Wei Liu <wei.liu2@xxxxxxxxxx> > > > Cc: andrei.semenov@xxxxxxxxx > > > --- > > > xen/arch/x86/dom0_build.c | 31 +++++++++++++++++++++++++++---- > > > xen/arch/x86/hvm/dom0_build.c | 6 ++++-- > > > xen/include/asm-x86/dom0_build.h | 2 ++ > > > 3 files changed, 33 insertions(+), 6 deletions(-) > > > > > > diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c > > > index ba9aa85611..3a8e138f23 100644 > > > --- a/xen/arch/x86/dom0_build.c > > > +++ b/xen/arch/x86/dom0_build.c > > > @@ -267,6 +267,25 @@ unsigned long __init dom0_shadow_pages(const struct > > > domain *d, > > > return ((memkb + 1023) / 1024) << (20 - PAGE_SHIFT); > > > } > > > > > > +unsigned long __init dom0_hap_pages(const struct domain *d, > > > + unsigned long nr_pages) > > > +{ > > > + /* > > > + * Attempt to account for at least some of the MMIO regions by > > > adding the > > > + * size of the holes in the memory map to the amount of pages to > > > map. Note > > > + * this will obviously not account for MMIO regions that are past > > > the last > > > + * RAM range in the memory map. > > > + */ > > > + nr_pages += max_page - total_pages; > > > > Do those regions past end of RAM range show up in E820 map? > > No, BARs for example don't need to be in reserved regions. I've got > one box with a 16GB Tesla card that has the 16GB BAR placed way past > the last entry in the memory map, without any reserved region. > > So while this approach is not perfect, it's better than what we > currently do, and we can always improve from there if it's clear what > limitations we currently have. Fair enough. Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |