Re: [PATCH 0/5] KVM: Turn the vcpu array into an xarray
On Tue, 16 Nov 2021 15:03:40 +, Paolo Bonzini wrote: > > On 11/5/21 20:20, Marc Zyngier wrote: > > The kvm structure is pretty large. A large portion of it is the vcpu > > array, which is 4kB on x86_64 and arm64 as they deal with 512 vcpu > > VMs. Of course, hardly anyone runs VMs this big, so this is often a > > net waste of memory and cache locality. > > > > A possible approach is to turn the fixed-size array into an xarray, > > which results in a net code deletion after a bit of cleanup. > > > > This series is on top of the current linux/master as it touches the > > RISC-V implementation. Only tested on arm64. > > Queued, only locally until I get a review for my replacement of patch > 4 (see > https://lore.kernel.org/kvm/2026142205.719375-1-pbonz...@redhat.com/T/). In which case, let me send a v2 with the changes that we discussed with Sean. It will still have my version of patch 4, but that's nothing you can't fix. M. -- Without deviation from the norm, progress is not possible.
Re: [PATCH 0/5] KVM: Turn the vcpu array into an xarray
On 11/5/21 20:20, Marc Zyngier wrote: The kvm structure is pretty large. A large portion of it is the vcpu array, which is 4kB on x86_64 and arm64 as they deal with 512 vcpu VMs. Of course, hardly anyone runs VMs this big, so this is often a net waste of memory and cache locality. A possible approach is to turn the fixed-size array into an xarray, which results in a net code deletion after a bit of cleanup. This series is on top of the current linux/master as it touches the RISC-V implementation. Only tested on arm64. Queued, only locally until I get a review for my replacement of patch 4 (see https://lore.kernel.org/kvm/2026142205.719375-1-pbonz...@redhat.com/T/). Paolo Marc Zyngier (5): KVM: Move wiping of the kvm->vcpus array to common code KVM: mips: Use kvm_get_vcpu() instead of open-coded access KVM: s390: Use kvm_get_vcpu() instead of open-coded access KVM: x86: Use kvm_get_vcpu() instead of open-coded access KVM: Convert the kvm->vcpus array to a xarray arch/arm64/kvm/arm.c | 10 +- arch/mips/kvm/loongson_ipi.c | 4 ++-- arch/mips/kvm/mips.c | 23 ++- arch/powerpc/kvm/powerpc.c | 10 +- arch/riscv/kvm/vm.c| 10 +- arch/s390/kvm/kvm-s390.c | 26 ++ arch/x86/kvm/vmx/posted_intr.c | 2 +- arch/x86/kvm/x86.c | 9 + include/linux/kvm_host.h | 7 --- virt/kvm/kvm_main.c| 33 ++--- 10 files changed, 45 insertions(+), 89 deletions(-)
Re: [PATCH 0/5] KVM: Turn the vcpu array into an xarray
On 11/16/21 15:13, Juergen Gross wrote: On 05.11.21 20:20, Marc Zyngier wrote: The kvm structure is pretty large. A large portion of it is the vcpu array, which is 4kB on x86_64 and arm64 as they deal with 512 vcpu VMs. Of course, hardly anyone runs VMs this big, so this is often a net waste of memory and cache locality. A possible approach is to turn the fixed-size array into an xarray, which results in a net code deletion after a bit of cleanup. This series is on top of the current linux/master as it touches the RISC-V implementation. Only tested on arm64. Marc Zyngier (5): KVM: Move wiping of the kvm->vcpus array to common code KVM: mips: Use kvm_get_vcpu() instead of open-coded access KVM: s390: Use kvm_get_vcpu() instead of open-coded access KVM: x86: Use kvm_get_vcpu() instead of open-coded access KVM: Convert the kvm->vcpus array to a xarray arch/arm64/kvm/arm.c | 10 +- arch/mips/kvm/loongson_ipi.c | 4 ++-- arch/mips/kvm/mips.c | 23 ++- arch/powerpc/kvm/powerpc.c | 10 +- arch/riscv/kvm/vm.c | 10 +- arch/s390/kvm/kvm-s390.c | 26 ++ arch/x86/kvm/vmx/posted_intr.c | 2 +- arch/x86/kvm/x86.c | 9 + include/linux/kvm_host.h | 7 --- virt/kvm/kvm_main.c | 33 ++--- 10 files changed, 45 insertions(+), 89 deletions(-) For x86 you can add my: Tested-by: Juergen Gross Heh, unfortunately x86 is the only one that needs a change in patch 4. I'll Cc you on my version. Paolo
[PATCH 0/5] KVM: Turn the vcpu array into an xarray
The kvm structure is pretty large. A large portion of it is the vcpu array, which is 4kB on x86_64 and arm64 as they deal with 512 vcpu VMs. Of course, hardly anyone runs VMs this big, so this is often a net waste of memory and cache locality. A possible approach is to turn the fixed-size array into an xarray, which results in a net code deletion after a bit of cleanup. This series is on top of the current linux/master as it touches the RISC-V implementation. Only tested on arm64. Marc Zyngier (5): KVM: Move wiping of the kvm->vcpus array to common code KVM: mips: Use kvm_get_vcpu() instead of open-coded access KVM: s390: Use kvm_get_vcpu() instead of open-coded access KVM: x86: Use kvm_get_vcpu() instead of open-coded access KVM: Convert the kvm->vcpus array to a xarray arch/arm64/kvm/arm.c | 10 +- arch/mips/kvm/loongson_ipi.c | 4 ++-- arch/mips/kvm/mips.c | 23 ++- arch/powerpc/kvm/powerpc.c | 10 +- arch/riscv/kvm/vm.c| 10 +- arch/s390/kvm/kvm-s390.c | 26 ++ arch/x86/kvm/vmx/posted_intr.c | 2 +- arch/x86/kvm/x86.c | 9 + include/linux/kvm_host.h | 7 --- virt/kvm/kvm_main.c| 33 ++--- 10 files changed, 45 insertions(+), 89 deletions(-) -- 2.30.2