From: Max Laier Subject: RFC: shadow page table reclaim Date: Fri, 28 Aug 2009 04:31:04 +0200 Message-ID: <200908280431.04960.max@laiers.net> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_oF0lKi1wVTkfBtV" To: kvm@vger.kernel.org Return-path: Received: from moutng.kundenserver.de ([212.227.17.10]:57219 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751410AbZH1CbF (ORCPT ); Thu, 27 Aug 2009 22:31:05 -0400 Sender: kvm-owner@vger.kernel.org List-ID: --Boundary-00=_oF0lKi1wVTkfBtV Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello, it seems to me that the reclaim mechanism for shadow page table pages is sub- optimal. The arch.active_mmu_pages list that is used for reclaiming does not move up parent shadow page tables when a child is added so when we need a new shadow page we zap the oldest - which can well be a directory level page holding a just added table level page. Attached is a proof-of-concept diff and two plots before and after. The plots show referenced guest pages over time. As you can see there is less saw- toothing in the after plot and also fewer changes overall (because we don't zap mappings that are still in use as often). This is with a limit of 64 for the shadow page table to increase the effect and vmx/ept. I realize that the list_move and parent walk are quite expensive and that kvm_mmu_alloc_page is only half the story. It should really be done every time a new guest page table is mapped - maybe via rmap_add. This would obviously completely kill performance-wise, though. Another idea would be to improve the reclaim logic in a way that it prefers "old" PT_PAGE_TABLE_LEVEL over directories. Though I'm not sure how to code that up sensibly, either. As I said, this is proof-of-concept and RFC. So any comments welcome. For my use case the proof-of-concept diff seems to do well enough, though. Thanks, -- /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News --Boundary-00=_oF0lKi1wVTkfBtV Content-Type: image/png; name="before.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="before.png" 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 --Boundary-00=_oF0lKi1wVTkfBtV Content-Type: image/png; name="after.png" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="after.png" 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 4LL8Aw2JoHRUZlLkAAAAAElFTkSuQmCC --Boundary-00=_oF0lKi1wVTkfBtV Content-Type: text/x-patch; charset="UTF-8"; name="reclaim1.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="reclaim1.diff" diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 95d5329..0a63570 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -190,6 +190,8 @@ struct kvm_unsync_walk { }; typedef int (*mmu_parent_walk_fn) (struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp); +static void mmu_parent_walk(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, + mmu_parent_walk_fn fn); static struct kmem_cache *pte_chain_cache; static struct kmem_cache *rmap_desc_cache; @@ -900,6 +902,12 @@ static unsigned kvm_page_table_hashfn(gfn_t gfn) return gfn & ((1 << KVM_MMU_HASH_SHIFT) - 1); } +static int move_up_walk_fn(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) +{ + list_move(&sp->link, &vcpu->kvm->arch.active_mmu_pages); + return 1; +} + static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, u64 *parent_pte) { @@ -918,6 +926,10 @@ static struct kvm_mmu_page *kvm_mmu_alloc_page(struct kvm_vcpu *vcpu, bitmap_zero(sp->slot_bitmap, KVM_MEMORY_SLOTS + KVM_PRIVATE_MEM_SLOTS); sp->multimapped = 0; sp->parent_pte = parent_pte; +#if 1 + if (parent_pte) + mmu_parent_walk(vcpu, sp, move_up_walk_fn); +#endif --vcpu->kvm->arch.n_free_mmu_pages; return sp; } --Boundary-00=_oF0lKi1wVTkfBtV--