kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Andrew Jones <drjones@redhat.com>, kvm@vger.kernel.org
Cc: alex.bennee@linaro.org, cov@codeaurora.org
Subject: Re: [kvm-unit-tests PATCH 10/18] run_tests: probe for max-smp
Date: Tue, 10 Nov 2015 17:31:08 +0100	[thread overview]
Message-ID: <56421BCC.5080307@redhat.com> (raw)
In-Reply-To: <1446769483-21586-11-git-send-email-drjones@redhat.com>



On 06/11/2015 01:24, Andrew Jones wrote:
> KVM can be configured to only support a few vcpus. ARM and AArch64
> currently have a default config of only 4. While it's nice to be
> able to write tests that use the maximum recommended, nr-host-cpus,
> we can't assume that nr-host-cpus == kvm-max-vcpus. This patch allows
> one to put $MAX_SMP in the smp = <num> line of a unittests.cfg file.
> That variable will then expand to the number of host cpus, or to the
> maximum vcpus allowed by KVM.
> 
> [Inspired by a patch from Alex Bennée solving the same issue.]
> 
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
>  arm/unittests.cfg       | 3 ++-
>  run_tests.sh            | 9 +++++++++
>  scripts/mkstandalone.sh | 9 ++++++++-
>  x86/unittests.cfg       | 1 +
>  4 files changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/arm/unittests.cfg b/arm/unittests.cfg
> index 243c13301811b..5e26da1a8c1bc 100644
> --- a/arm/unittests.cfg
> +++ b/arm/unittests.cfg
> @@ -2,6 +2,7 @@
>  # [unittest_name]
>  # file = foo.flat # Name of the flat file to be used
>  # smp  = 2        # Number of processors the VM will use during this test
> +#                 # Use $MAX_SMP to use the maximum the host supports.
>  # extra_params = -append <params...> # Additional parameters used
>  # arch = arm|arm64                   # Only if test case is specific to one
>  # groups = group1 group2 # Used to identify test cases with run_tests -g ...
> @@ -34,6 +35,6 @@ groups = selftest
>  # Test SMP support
>  [selftest-smp]
>  file = selftest.flat
> -smp = `getconf _NPROCESSORS_CONF`
> +smp = $MAX_SMP
>  extra_params = -append 'smp'
>  groups = selftest
> diff --git a/run_tests.sh b/run_tests.sh
> index b1b4c541ecaea..fad22a935b007 100755
> --- a/run_tests.sh
> +++ b/run_tests.sh
> @@ -98,4 +98,13 @@ while getopts "g:hv" opt; do
>      esac
>  done
>  
> +#
> +# Probe for MAX_SMP
> +#
> +MAX_SMP=$(getconf _NPROCESSORS_CONF)
> +while ./$TEST_DIR-run _NO_FILE_4Uhere_ -smp $MAX_SMP \
> +		|& grep -q 'exceeds max cpus'; do
> +	((--MAX_SMP))
> +done
> +
>  for_each_unittest $config run
> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
> index 0c39451e538c9..3ce244aff67b9 100755
> --- a/scripts/mkstandalone.sh
> +++ b/scripts/mkstandalone.sh
> @@ -95,12 +95,19 @@ qemu="$qemu"
>  if [ "\$QEMU" ]; then
>  	qemu="\$QEMU"
>  fi
> +
> +MAX_SMP="MAX_SMP"
>  echo \$qemu $cmdline -smp $smp $opts
>  
>  cmdline="\`echo '$cmdline' | sed s%$kernel%_NO_FILE_4Uhere_%\`"
>  if \$qemu \$cmdline 2>&1 | grep 'No accelerator found'; then
> -        ret=2
> +	ret=2
>  else
> +	MAX_SMP=\`getconf _NPROCESSORS_CONF\`
> +	while \$qemu \$cmdline -smp \$MAX_SMP 2>&1 | grep 'exceeds max cpus' > /dev/null; do
> +		MAX_SMP=\`expr \$MAX_SMP - 1\`
> +	done
> +
>  	cmdline="\`echo '$cmdline' | sed s%$kernel%\$bin%\`"
>  	\$qemu \$cmdline -smp $smp $opts
>  	ret=\$?
> diff --git a/x86/unittests.cfg b/x86/unittests.cfg
> index a38544f77c056..337cc19d3d19d 100644
> --- a/x86/unittests.cfg
> +++ b/x86/unittests.cfg
> @@ -2,6 +2,7 @@
>  # [unittest_name]
>  # file = foo.flat # Name of the flat file to be used
>  # smp = 2 # Number of processors the VM will use during this test
> +#         # Use $MAX_SMP to use the maximum the host supports.
>  # extra_params = -cpu qemu64,+x2apic # Additional parameters used
>  # arch = i386/x86_64 # Only if the test case works only on one of them
>  # groups = group1 group2 # Used to identify test cases with run_tests -g ...
> 

Applied, thanks.

Paolo

  reply	other threads:[~2015-11-10 16:31 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06  0:24 [kvm-unit-tests PATCH 00/18] bunch of mostly trivial patches Andrew Jones
2015-11-06  0:24 ` [kvm-unit-tests PATCH 01/18] makefiles: use bash Andrew Jones
2015-11-10 16:22   ` Paolo Bonzini
2015-11-10 16:37     ` Andrew Jones
2015-11-10 16:48       ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 02/18] trivial: lib: fail hard on failed mallocs Andrew Jones
2015-11-06 14:05   ` Thomas Huth
2015-11-07  1:02     ` Andrew Jones
2015-11-09 20:53   ` [kvm-unit-tests PATCH v2 02/19] " Andrew Jones
2015-11-09 20:55     ` Thomas Huth
2015-11-10 16:23     ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 03/18] trivial: alloc: don't use 'top' outside spinlock Andrew Jones
2015-11-10 16:24   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 04/18] trivial: lib: missing extern in string.h Andrew Jones
2015-11-10 16:24   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 05/18] README: add pointer to new wiki page Andrew Jones
2015-11-10 16:25   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 06/18] README: add some CONTRIBUTING notes Andrew Jones
2015-11-10 16:25   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 07/18] configure: emit HOST=$host to config.mak Andrew Jones
2015-11-10 16:26   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 08/18] run_tests: pass test name to run script Andrew Jones
2015-11-10 16:34   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 09/18] arm/run: use ACCEL to choose between kvm and tcg Andrew Jones
2015-11-10 16:30   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 10/18] run_tests: probe for max-smp Andrew Jones
2015-11-10 16:31   ` Paolo Bonzini [this message]
2015-11-06  0:24 ` [kvm-unit-tests PATCH 11/18] lib/printf: support the %u unsigned fmt field Andrew Jones
2015-11-10 16:33   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 12/18] lib/arm: add flush_tlb_page mmu function Andrew Jones
2015-11-10 16:33   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 13/18] arm: Fail on unknown subtest Andrew Jones
2015-11-10 16:34   ` Paolo Bonzini
2015-11-06  0:24 ` [kvm-unit-tests PATCH 14/18] arm/arm64: allow building a single test Andrew Jones
2015-11-06  0:24 ` [kvm-unit-tests PATCH 15/18] arm/arm64: generate map files Andrew Jones
2015-11-06  0:24 ` [kvm-unit-tests PATCH 16/18] lib: link in linux kernel headers (uapi) Andrew Jones
2015-11-06  0:24 ` [kvm-unit-tests PATCH 17/18] Revert "arm/arm64: import include/uapi/linux/psci.h" Andrew Jones
2015-11-06  0:24 ` [kvm-unit-tests PATCH 18/18] arm/arm64: uart0_init: check /chosen/stdout-path Andrew Jones
2015-11-10 16:37   ` Paolo Bonzini
2015-11-09 20:57 ` [kvm-unit-tests PATCH 19/18] don't embed code inside asserts Andrew Jones
2015-11-10 16:37   ` Paolo Bonzini
2015-11-10 16:38 ` [kvm-unit-tests PATCH 00/18] bunch of mostly trivial patches Paolo Bonzini
2015-11-10 16:54   ` Andrew Jones
2015-11-20 18:01     ` Andrew Jones

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=56421BCC.5080307@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=cov@codeaurora.org \
    --cc=drjones@redhat.com \
    --cc=kvm@vger.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: link
Be 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).