All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] selftests: powerpc: Fix CPU affinity for child process
@ 2020-06-09  8:14 Harish
  2020-06-09  9:03 ` Kamalesh Babulal
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Harish @ 2020-06-09  8:14 UTC (permalink / raw)
  To: mpe; +Cc: srikar, kamalesh, shiganta, sathnaga, sandipan, Harish, linuxppc-dev

On systems with large number of cpus, test fails trying to set
affinity by calling sched_setaffinity() with smaller size for
affinity mask. This patch fixes it by making sure that the size of
allocated affinity mask is dependent on the number of CPUs as
reported by get_nprocs().

Fixes: 00b7ec5c9cf3 ("selftests/powerpc: Import Anton's context_switch2 benchmark")
Reported-by: Shirisha Ganta <shiganta@in.ibm.com>
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Harish <harish@linux.ibm.com>
---
v2: https://lore.kernel.org/linuxppc-dev/20200609034005.520137-1-harish@linux.ibm.com/

Changes from v2:
- Interchanged size and ncpus as suggested by Satheesh
- Revert the exit code as suggested by Satheesh
- Added NULL check for the affinity mask as suggested by Kamalesh
- Freed the affinity mask allocation after affinity is set
  as suggested by Kamalesh
- Changed "cpu set" to "affinity mask" in the commit message

---
 .../powerpc/benchmarks/context_switch.c       | 21 ++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/powerpc/benchmarks/context_switch.c b/tools/testing/selftests/powerpc/benchmarks/context_switch.c
index a2e8c9da7fa5..d50cc05df495 100644
--- a/tools/testing/selftests/powerpc/benchmarks/context_switch.c
+++ b/tools/testing/selftests/powerpc/benchmarks/context_switch.c
@@ -19,6 +19,7 @@
 #include <limits.h>
 #include <sys/time.h>
 #include <sys/syscall.h>
+#include <sys/sysinfo.h>
 #include <sys/types.h>
 #include <sys/shm.h>
 #include <linux/futex.h>
@@ -104,8 +105,9 @@ static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu)
 
 static void start_process_on(void *(*fn)(void *), void *arg, unsigned long cpu)
 {
-	int pid;
-	cpu_set_t cpuset;
+	int pid, ncpus;
+	cpu_set_t *cpuset;
+	size_t size;
 
 	pid = fork();
 	if (pid == -1) {
@@ -116,14 +118,23 @@ static void start_process_on(void *(*fn)(void *), void *arg, unsigned long cpu)
 	if (pid)
 		return;
 
-	CPU_ZERO(&cpuset);
-	CPU_SET(cpu, &cpuset);
+	ncpus = get_nprocs();
+	size = CPU_ALLOC_SIZE(ncpus);
+	cpuset = CPU_ALLOC(ncpus);
+	if (!cpuset) {
+		perror("malloc");
+		exit(1);
+	}
+	CPU_ZERO_S(size, cpuset);
+	CPU_SET_S(cpu, size, cpuset);
 
-	if (sched_setaffinity(0, sizeof(cpuset), &cpuset)) {
+	if (sched_setaffinity(0, size, cpuset)) {
 		perror("sched_setaffinity");
+		CPU_FREE(cpuset);
 		exit(1);
 	}
 
+	CPU_FREE(cpuset);
 	fn(arg);
 
 	exit(0);
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] selftests: powerpc: Fix CPU affinity for child process
  2020-06-09  8:14 [PATCH v3] selftests: powerpc: Fix CPU affinity for child process Harish
@ 2020-06-09  9:03 ` Kamalesh Babulal
  2020-06-09 10:29 ` Satheesh Rajendran
  2020-08-02 13:39 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Kamalesh Babulal @ 2020-06-09  9:03 UTC (permalink / raw)
  To: Harish; +Cc: srikar, shiganta, sathnaga, sandipan, linuxppc-dev

On 6/9/20 1:44 PM, Harish wrote:
> On systems with large number of cpus, test fails trying to set
> affinity by calling sched_setaffinity() with smaller size for
> affinity mask. This patch fixes it by making sure that the size of
> allocated affinity mask is dependent on the number of CPUs as
> reported by get_nprocs().
> 
> Fixes: 00b7ec5c9cf3 ("selftests/powerpc: Import Anton's context_switch2 benchmark")
> Reported-by: Shirisha Ganta <shiganta@in.ibm.com>
> Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
> Signed-off-by: Harish <harish@linux.ibm.com>

LGTM,

Reviewed-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>

-- 
Kamalesh

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] selftests: powerpc: Fix CPU affinity for child process
  2020-06-09  8:14 [PATCH v3] selftests: powerpc: Fix CPU affinity for child process Harish
  2020-06-09  9:03 ` Kamalesh Babulal
@ 2020-06-09 10:29 ` Satheesh Rajendran
  2020-08-02 13:39 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Satheesh Rajendran @ 2020-06-09 10:29 UTC (permalink / raw)
  To: Harish; +Cc: srikar, kamalesh, shiganta, sathnaga, sandipan, linuxppc-dev

On Tue, Jun 09, 2020 at 01:44:23PM +0530, Harish wrote:
> On systems with large number of cpus, test fails trying to set
> affinity by calling sched_setaffinity() with smaller size for
> affinity mask. This patch fixes it by making sure that the size of
> allocated affinity mask is dependent on the number of CPUs as
> reported by get_nprocs().
> 
> Fixes: 00b7ec5c9cf3 ("selftests/powerpc: Import Anton's context_switch2 benchmark")
> Reported-by: Shirisha Ganta <shiganta@in.ibm.com>
> Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
> Signed-off-by: Harish <harish@linux.ibm.com>
> ---

Reviewed-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>

> v2: https://lore.kernel.org/linuxppc-dev/20200609034005.520137-1-harish@linux.ibm.com/
> 
> Changes from v2:
> - Interchanged size and ncpus as suggested by Satheesh
> - Revert the exit code as suggested by Satheesh
> - Added NULL check for the affinity mask as suggested by Kamalesh
> - Freed the affinity mask allocation after affinity is set
>   as suggested by Kamalesh
> - Changed "cpu set" to "affinity mask" in the commit message
> 
> ---
>  .../powerpc/benchmarks/context_switch.c       | 21 ++++++++++++++-----
>  1 file changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/testing/selftests/powerpc/benchmarks/context_switch.c b/tools/testing/selftests/powerpc/benchmarks/context_switch.c
> index a2e8c9da7fa5..d50cc05df495 100644
> --- a/tools/testing/selftests/powerpc/benchmarks/context_switch.c
> +++ b/tools/testing/selftests/powerpc/benchmarks/context_switch.c
> @@ -19,6 +19,7 @@
>  #include <limits.h>
>  #include <sys/time.h>
>  #include <sys/syscall.h>
> +#include <sys/sysinfo.h>
>  #include <sys/types.h>
>  #include <sys/shm.h>
>  #include <linux/futex.h>
> @@ -104,8 +105,9 @@ static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu)
> 
>  static void start_process_on(void *(*fn)(void *), void *arg, unsigned long cpu)
>  {
> -	int pid;
> -	cpu_set_t cpuset;
> +	int pid, ncpus;
> +	cpu_set_t *cpuset;
> +	size_t size;
> 
>  	pid = fork();
>  	if (pid == -1) {
> @@ -116,14 +118,23 @@ static void start_process_on(void *(*fn)(void *), void *arg, unsigned long cpu)
>  	if (pid)
>  		return;
> 
> -	CPU_ZERO(&cpuset);
> -	CPU_SET(cpu, &cpuset);
> +	ncpus = get_nprocs();
> +	size = CPU_ALLOC_SIZE(ncpus);
> +	cpuset = CPU_ALLOC(ncpus);
> +	if (!cpuset) {
> +		perror("malloc");
> +		exit(1);
> +	}
> +	CPU_ZERO_S(size, cpuset);
> +	CPU_SET_S(cpu, size, cpuset);
> 
> -	if (sched_setaffinity(0, sizeof(cpuset), &cpuset)) {
> +	if (sched_setaffinity(0, size, cpuset)) {
>  		perror("sched_setaffinity");
> +		CPU_FREE(cpuset);
>  		exit(1);
>  	}
> 
> +	CPU_FREE(cpuset);
>  	fn(arg);
> 
>  	exit(0);
> -- 
> 2.24.1
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] selftests: powerpc: Fix CPU affinity for child process
  2020-06-09  8:14 [PATCH v3] selftests: powerpc: Fix CPU affinity for child process Harish
  2020-06-09  9:03 ` Kamalesh Babulal
  2020-06-09 10:29 ` Satheesh Rajendran
@ 2020-08-02 13:39 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Ellerman @ 2020-08-02 13:39 UTC (permalink / raw)
  To: Harish, mpe; +Cc: srikar, kamalesh, shiganta, sathnaga, sandipan, linuxppc-dev

On Tue, 9 Jun 2020 13:44:23 +0530, Harish wrote:
> On systems with large number of cpus, test fails trying to set
> affinity by calling sched_setaffinity() with smaller size for
> affinity mask. This patch fixes it by making sure that the size of
> allocated affinity mask is dependent on the number of CPUs as
> reported by get_nprocs().

Applied to powerpc/next.

[1/1] selftests/powerpc: Fix CPU affinity for child process
      https://git.kernel.org/powerpc/c/854eb5022be04f81e318765f089f41a57c8e5d83

cheers

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-08-02 14:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-09  8:14 [PATCH v3] selftests: powerpc: Fix CPU affinity for child process Harish
2020-06-09  9:03 ` Kamalesh Babulal
2020-06-09 10:29 ` Satheesh Rajendran
2020-08-02 13:39 ` Michael Ellerman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.