LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Vitaly Kuznetsov <vkuznets@redhat.com> To: Juergen Gross <jgross@suse.com> Cc: Jonathan Corbet <corbet@lwn.net>, Paolo Bonzini <pbonzini@redhat.com>, Sean Christopherson <seanjc@google.com>, Wanpeng Li <wanpengli@tencent.com>, Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>, linux-kernel@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org Subject: Re: [PATCH 6/6] x86/kvm: add boot parameter for setting max number of vcpus per guest Date: Wed, 14 Jul 2021 13:15:14 +0200 [thread overview] Message-ID: <87h7gx2lkt.fsf@vitty.brq.redhat.com> (raw) In-Reply-To: <20210701154105.23215-7-jgross@suse.com> Juergen Gross <jgross@suse.com> writes: > Today the maximum number of vcpus of a kvm guest is set via a #define > in a header file. > > In order to support higher vcpu numbers for guests without generally > increasing the memory consumption of guests on the host especially on > very large systems add a boot parameter for specifying the number of > allowed vcpus for guests. > > The default will still be the current setting of 288. The value 0 has > the special meaning to limit the number of possible vcpus to the > number of possible cpus of the host. > > Signed-off-by: Juergen Gross <jgross@suse.com> > --- > Documentation/admin-guide/kernel-parameters.txt | 10 ++++++++++ > arch/x86/include/asm/kvm_host.h | 5 ++++- > arch/x86/kvm/x86.c | 7 +++++++ > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index 99bfa53a2bbd..8eb856396ffa 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -2373,6 +2373,16 @@ > guest can't have more vcpus than the set value + 1. > Default: 1023 > > + kvm.max_vcpus= [KVM,X86] Set the maximum allowed numbers of vcpus per > + guest. The special value 0 sets the limit to the number > + of physical cpus possible on the host (including not > + yet hotplugged cpus). Higher values will result in > + slightly higher memory consumption per guest. Depending > + on the value and the virtual topology the maximum > + allowed vcpu-id might need to be raised, too (see > + kvm.max_vcpu_id parameter). I'd suggest to at least add a sanity check: 'max_vcpu_id' should always be >= 'max_vcpus'. Alternatively, we can replace 'max_vcpu_id' with say 'vcpu_id_to_vcpus_ratio' and set it to e.g. '4' by default. > + Default: 288 > + > l1tf= [X86] Control mitigation of the L1TF vulnerability on > affected CPUs > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 39cbc4b6bffb..65ae82a5d444 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -37,7 +37,8 @@ > > #define __KVM_HAVE_ARCH_VCPU_DEBUGFS > > -#define KVM_MAX_VCPUS 288 > +#define KVM_DEFAULT_MAX_VCPUS 288 > +#define KVM_MAX_VCPUS max_vcpus > #define KVM_SOFT_MAX_VCPUS 240 > #define KVM_DEFAULT_MAX_VCPU_ID 1023 > #define KVM_MAX_VCPU_ID max_vcpu_id > @@ -1509,6 +1510,8 @@ extern u64 kvm_max_tsc_scaling_ratio; > extern u64 kvm_default_tsc_scaling_ratio; > /* bus lock detection supported? */ > extern bool kvm_has_bus_lock_exit; > +/* maximum number of vcpus per guest */ > +extern unsigned int max_vcpus; > /* maximum vcpu-id */ > extern unsigned int max_vcpu_id; > /* per cpu vcpu bitmasks (disable preemption during usage) */ > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index a9b0bb2221ea..888c4507504d 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -177,6 +177,10 @@ module_param(force_emulation_prefix, bool, S_IRUGO); > int __read_mostly pi_inject_timer = -1; > module_param(pi_inject_timer, bint, S_IRUGO | S_IWUSR); > > +unsigned int __read_mostly max_vcpus = KVM_DEFAULT_MAX_VCPUS; > +module_param(max_vcpus, uint, S_IRUGO); > +EXPORT_SYMBOL_GPL(max_vcpus); > + > unsigned int __read_mostly max_vcpu_id = KVM_DEFAULT_MAX_VCPU_ID; > module_param(max_vcpu_id, uint, S_IRUGO); > > @@ -10648,6 +10652,9 @@ int kvm_arch_hardware_setup(void *opaque) > if (boot_cpu_has(X86_FEATURE_XSAVES)) > rdmsrl(MSR_IA32_XSS, host_xss); > > + if (max_vcpus == 0) > + max_vcpus = num_possible_cpus(); Is this special case really needed? I mean 'max_vcpus' is not '0' by default so whoever sets it manually probably knows how big his guests are going to be anyway and it is not always obvious how many CPUs are reported by 'num_possible_cpus()' (ACPI tables can be weird for example). > + > kvm_pcpu_vcpu_mask = __alloc_percpu(KVM_VCPU_MASK_SZ, > sizeof(unsigned long)); > kvm_hv_vp_bitmap = __alloc_percpu(KVM_HV_VPMAP_SZ, sizeof(u64)); -- Vitaly
next prev parent reply other threads:[~2021-07-14 11:15 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-01 15:40 [PATCH 0/6] x86/kvm: add boot parameters for max vcpu configs Juergen Gross 2021-07-01 15:41 ` [PATCH 1/6] x86/kvm: fix vcpu-id indexed array sizes Juergen Gross 2021-09-03 15:28 ` Eduardo Habkost 2021-07-01 15:41 ` [PATCH 2/6] x86/kvm: remove non-x86 stuff from arch/x86/kvm/ioapic.h Juergen Gross 2021-07-01 15:41 ` [PATCH 3/6] x86/kvm: add boot parameter for maximum vcpu-id Juergen Gross 2021-07-01 15:41 ` [PATCH 4/6] x86/kvm: introduce per cpu vcpu masks Juergen Gross 2021-07-26 13:32 ` Paolo Bonzini 2021-07-26 13:38 ` Juergen Gross 2021-07-01 15:41 ` [PATCH 5/6] kvm: allocate vcpu pointer array separately Juergen Gross 2021-07-26 13:40 ` Paolo Bonzini 2021-07-26 13:46 ` Juergen Gross 2021-07-26 13:57 ` Marc Zyngier 2021-07-01 15:41 ` [PATCH 6/6] x86/kvm: add boot parameter for setting max number of vcpus per guest Juergen Gross 2021-07-14 11:15 ` Vitaly Kuznetsov [this message] 2021-07-14 11:24 ` Juergen Gross 2021-07-14 11:45 ` Vitaly Kuznetsov 2021-07-14 13:04 ` Juergen Gross 2021-07-14 13:21 ` Vitaly Kuznetsov 2021-09-03 7:01 ` Juergen Gross 2021-09-03 7:40 ` Vitaly Kuznetsov 2021-07-26 13:41 ` [PATCH 0/6] x86/kvm: add boot parameters for max vcpu configs Paolo Bonzini
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=87h7gx2lkt.fsf@vitty.brq.redhat.com \ --to=vkuznets@redhat.com \ --cc=bp@alien8.de \ --cc=corbet@lwn.net \ --cc=hpa@zytor.com \ --cc=jgross@suse.com \ --cc=jmattson@google.com \ --cc=joro@8bytes.org \ --cc=kvm@vger.kernel.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@redhat.com \ --cc=pbonzini@redhat.com \ --cc=seanjc@google.com \ --cc=tglx@linutronix.de \ --cc=wanpengli@tencent.com \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).