[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 15/18] IOMMU/x86: prefill newly allocate page tables


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 14 Dec 2021 10:15:37 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wlUCKYbVT2v00ik+CjmWls5ppUwwUQEydRtTRfPPBdA=; b=L9dJBhLl3yxiCeg6mYHrF1DLkgf37WO1wYH7zBE/pNDR/S4g8fFXBG9QdTEP8RaZ3R4CsTimfb8Fe15dCkG2ET6QyA/DPzPiIRJbNja3o+lDMkLUvHDKw8Yrub7pIrb9gXwg8DQblBY6JEdach7w2ndudJIl/zQ73wbrgDzteQnU8fC0SbPMGT39x3rGZI0v07ldqM9zXBpWb0IuNOrK87NGTJZezYaMW1vW31V1fa6+ff7gBCv1UwdiiOOBNV9N90sYzz2pZXoC7INO8wR1QQBvRJHdxEjFpTF1Ch5Mr+NHX3JjN0jvk+xGThOew88NyqQySNRgvui2hs9502a/Uw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=avkMExzUrsMZ4Uj0KufpIDOAc/mMyYrDuenZwmcLhNik25YxeGtUzHi9R3Dv3nkcWUFomZRCy/9QtS759lV82V1MXocvAFgNGx1xcGTy78EqQKhyvQqD/LHwQJI9/d+XCLBFnLAOH1WuN0awnfc/RSOdMn1E6A6gfhXHO346N0wxHPVJX2aevibH5M8u5vcaNk9q+zRhW+FzxAHWZBFJluNIN5pOzDXRAfgGKbXrpvswij34xYIM4TgB2I8uhsM62PpsDLGqIbf7xrZTNJoFKQb3nv096jG7an66VS779nrkwBvPe9iSDr8bXmadouhTPYa6oBkWpWhBOPcf4s2vFA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>
  • Delivery-date: Tue, 14 Dec 2021 09:16:03 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 13.12.2021 16:51, Roger Pau Monné wrote:
> On Fri, Sep 24, 2021 at 11:54:58AM +0200, Jan Beulich wrote:
>> Page table are used for two purposes after allocation: They either start
>> out all empty, or they get filled to replace a superpage. Subsequently,
>> to replace all empty or fully contiguous page tables, contiguous sub-
>> regions will be recorded within individual page tables. Install the
>> initial set of markers immediately after allocation. Make sure to retain
>> these markers when further populating a page table in preparation for it
>> to replace a superpage.
>>
>> The markers are simply 4-bit fields holding the order value of
>> contiguous entries. To demonstrate this, if a page table had just 16
>> entries, this would be the initial (fully contiguous) set of markers:
>>
>> index  0 1 2 3 4 5 6 7 8 9 A B C D E F
>> marker 4 0 1 0 2 0 1 0 3 0 1 0 2 0 1 0
>>
>> "Contiguous" here means not only present entries with successively
>> increasing MFNs, each one suitably aligned for its slot, but also a
>> respective number of all non-present entries.
> 
> I'm afraid I'm slightly lost with all this, please bear with me. Is
> this just a performance improvement when doing super-page
> replacements, or there's more to it?

What I wanted to strictly avoid is to have to scan entire pages for
contiguity (i.e. on average touching half a page), like e.g.
map_pages_to_xen() and modify_xen_mappings() do. Hence I tried to
find a scheme where for any individual update only a predictably
very limited number of entries need inspecting (some of these then
of course also need updating).

Jan




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.