From: John Kacur <jkacur@redhat.com>
To: Daniel Wagner <dwagner@suse.de>
Cc: Clark Williams <williams@redhat.com>, linux-rt-users@vger.kernel.org
Subject: Re: [rt-tests v2 v2 01/20] cyclictest: Always use libnuma
Date: Tue, 26 Jan 2021 00:10:51 -0500 (EST) [thread overview]
Message-ID: <cf944ef0-a7e1-c0ee-f0ad-f7b98b7a7412@redhat.com> (raw)
In-Reply-To: <20201218161843.1764-2-dwagner@suse.de>
On Fri, 18 Dec 2020, Daniel Wagner wrote:
> libnuma is hard dependency for cyclictest. Thus we can always call
> numa_initialize(). This allows us to remove the global 'numa' variable
> to track if libnuma has been initialized or not.
>
> Signed-off-by: Daniel Wagner <dwagner@suse.de>
> ---
> src/cyclictest/cyclictest.c | 63 +++++++++++++++++--------------------
> src/cyclictest/rt_numa.h | 2 --
> 2 files changed, 29 insertions(+), 36 deletions(-)
>
> diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
> index f38c453f1975..514ed7b20fdb 100644
> --- a/src/cyclictest/cyclictest.c
> +++ b/src/cyclictest/cyclictest.c
> @@ -1018,9 +1018,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
> /* smp sets AFFINITY_USEALL in OPT_SMP */
> if (smp)
> break;
> - if (numa_initialize())
> - fatal("Couldn't initialize libnuma");
> - numa = 1;
> if (optarg) {
> parse_cpumask(optarg, max_cpus, &affinity_mask);
> setaffinity = AFFINITY_SPECIFIED;
> @@ -1126,8 +1123,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
> use_system = MODE_SYS_OFFSET; break;
> case 'S':
> case OPT_SMP: /* SMP testing */
> - if (numa)
> - fatal("numa and smp options are mutually exclusive\n");
> smp = 1;
> num_threads = -1; /* update after parsing */
> setaffinity = AFFINITY_USEALL;
> @@ -1201,16 +1196,17 @@ static void process_options(int argc, char *argv[], int max_cpus)
>
> /* if smp wasn't requested, test for numa automatically */
> if (!smp) {
> - if (numa_initialize())
> - fatal("Couldn't initialize libnuma");
> - numa = 1;
> if (setaffinity == AFFINITY_UNSPECIFIED)
> setaffinity = AFFINITY_USEALL;
> }
>
> - if (option_affinity) {
> - if (smp)
> - warn("-a ignored due to smp mode\n");
> + if (option_affinity && smp) {
> + warn("-a ignored due to smp mode\n");
> + if (affinity_mask) {
> + numa_bitmask_free(affinity_mask);
> + affinity_mask = NULL;
> + }
> + setaffinity = AFFINITY_USEALL;
> }
>
> if (smi) {
> @@ -1744,6 +1740,12 @@ int main(int argc, char **argv)
> int max_cpus = sysconf(_SC_NPROCESSORS_ONLN);
> int i, ret = -1;
> int status;
> + void *stack;
> + void *currstk;
> + size_t stksize;
> +
> + if (numa_initialize())
> + fatal("Couldn't initialize libnuma");
>
> process_options(argc, argv, max_cpus);
>
> @@ -1926,34 +1928,27 @@ int main(int argc, char **argv)
> default: cpu = -1;
> }
>
> - node = -1;
> - if (numa) {
> - void *stack;
> - void *currstk;
> - size_t stksize;
> + /* find the memory node associated with the cpu i */
> + node = rt_numa_numa_node_of_cpu(cpu);
>
> - /* find the memory node associated with the cpu i */
> - node = rt_numa_numa_node_of_cpu(cpu);
> + /* get the stack size set for this thread */
> + if (pthread_attr_getstack(&attr, &currstk, &stksize))
> + fatal("failed to get stack size for thread %d\n", i);
>
> - /* get the stack size set for this thread */
> - if (pthread_attr_getstack(&attr, &currstk, &stksize))
> - fatal("failed to get stack size for thread %d\n", i);
> + /* if the stack size is zero, set a default */
> + if (stksize == 0)
> + stksize = PTHREAD_STACK_MIN * 2;
>
> - /* if the stack size is zero, set a default */
> - if (stksize == 0)
> - stksize = PTHREAD_STACK_MIN * 2;
> + /* allocate memory for a stack on appropriate node */
> + stack = rt_numa_numa_alloc_onnode(stksize, node, cpu);
>
> - /* allocate memory for a stack on appropriate node */
> - stack = rt_numa_numa_alloc_onnode(stksize, node, cpu);
> + /* touch the stack pages to pre-fault them in */
> + memset(stack, 0, stksize);
>
> - /* touch the stack pages to pre-fault them in */
> - memset(stack, 0, stksize);
> -
> - /* set the thread's stack */
> - if (pthread_attr_setstack(&attr, stack, stksize))
> - fatal("failed to set stack addr for thread %d to 0x%x\n",
> - i, stack+stksize);
> - }
> + /* set the thread's stack */
> + if (pthread_attr_setstack(&attr, stack, stksize))
> + fatal("failed to set stack addr for thread %d to 0x%x\n",
> + i, stack+stksize);
>
> /* allocate the thread's parameter block */
> parameters[i] = par = threadalloc(sizeof(struct thread_param), node);
> diff --git a/src/cyclictest/rt_numa.h b/src/cyclictest/rt_numa.h
> index 46690941e0a6..8d02f419ed6d 100644
> --- a/src/cyclictest/rt_numa.h
> +++ b/src/cyclictest/rt_numa.h
> @@ -13,8 +13,6 @@
> #include "rt-utils.h"
> #include "error.h"
>
> -static int numa = 0;
> -
> #include <numa.h>
>
> static void *
> --
> 2.29.2
>
>
Signed-off-by: John Kacur <jkacur@redhat.com>
next prev parent reply other threads:[~2021-01-27 3:55 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-18 16:18 [rt-tests v2 v2 00/20] rt-numa.h cleanups Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 01/20] cyclictest: Always use libnuma Daniel Wagner
2021-01-26 5:10 ` John Kacur [this message]
2021-02-19 13:44 ` Kurt Kanzenbach
2021-02-19 14:12 ` Daniel Wagner
2021-02-19 14:39 ` Kurt Kanzenbach
2021-02-19 14:54 ` Daniel Wagner
2021-02-19 15:17 ` Sebastian Andrzej Siewior
2021-02-19 15:21 ` Christian Eggers
2021-02-19 16:16 ` Daniel Wagner
2021-02-19 16:21 ` John Kacur
2021-02-19 16:27 ` Christian Eggers
2021-02-19 16:35 ` Daniel Wagner
2021-02-19 16:39 ` John Kacur
2021-02-19 17:07 ` John Kacur
2021-02-19 16:45 ` John Kacur
2020-12-18 16:18 ` [rt-tests v2 v2 02/20] cyclictest: Use numa API directly Daniel Wagner
2021-01-26 5:31 ` John Kacur
2021-01-26 8:11 ` Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 03/20] cyclictest: Use affinity_mask for stearing thread placement Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 04/20] cyclictest: Mimik --smp behavior with --affinity Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 05/20] cyclictest: Simplify --smp vs --affinity vs --threads argument logic Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 06/20] cyclictest: Move verbose message into main Daniel Wagner
2021-01-26 6:28 ` John Kacur
2020-12-18 16:18 ` [rt-tests v2 v2 07/20] signaltest: Always use libnuma Daniel Wagner
2021-01-26 6:29 ` John Kacur
2020-12-18 16:18 ` [rt-tests v2 v2 08/20] signaltest: Use affinity_mask for stearing thread placement Daniel Wagner
2021-01-26 6:31 ` John Kacur
2021-01-26 8:15 ` Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 09/20] signaltest: Simplify --smp vs --affinity vs --threads argument logic Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 10/20] rt-numa: Remove unused definitions and numa_initialize() Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 11/20] rt-numa: Add generic cpu_for_thread() helper Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 12/20] rt-numa: Use mask size for iterator limit Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 13/20] rt-numa: Remove max_cpus argument from parse_cpusmask Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 14/20] rt-numa: Use error message helpers Daniel Wagner
2021-01-26 6:40 ` John Kacur
2020-12-18 16:18 ` [rt-tests v2 v2 15/20] signaltest: Remove unused max_cpus argument from process_options Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 16/20] cyclictest: " Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 17/20] rt-numa: Use CPU_SETSIZE as upper loop limit Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 18/20] rt-numa: Remove used max_cpus argument from cpu_for_thread() Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 19/20] cyclictest: Remove max cpus used verbose information Daniel Wagner
2020-12-18 16:18 ` [rt-tests v2 v2 20/20] cyclictest: Remove unecessary local variable Daniel Wagner
2021-01-22 12:51 ` [rt-tests v2 v2 00/20] rt-numa.h cleanups Daniel Wagner
2021-01-26 5:04 ` John Kacur
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=cf944ef0-a7e1-c0ee-f0ad-f7b98b7a7412@redhat.com \
--to=jkacur@redhat.com \
--cc=dwagner@suse.de \
--cc=linux-rt-users@vger.kernel.org \
--cc=williams@redhat.com \
/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).