* [PATCH 0/3] perf bench numa: fix few minor issues @ 2020-07-06 9:42 Alexander Gordeev 2020-07-06 9:42 ` [PATCH 1/3] perf bench numa: fix incorrect NUMA toplogy assumption Alexander Gordeev ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Alexander Gordeev @ 2020-07-06 9:42 UTC (permalink / raw) To: linux-perf-users; +Cc: linux-kernel, Alexander Gordeev Hi all, Please, find couple of fixes to the tool. Note, I did not bother fixing leaked memory allocated with numa_allocate_cpumask(). Alexander Gordeev (3): perf bench numa: fix incorrect NUMA toplogy assumption perf bench numa: fix benchmark names perf bench numa: fix wrong benchmark configuration tools/perf/bench/numa.c | 72 ++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 37 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/3] perf bench numa: fix incorrect NUMA toplogy assumption 2020-07-06 9:42 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev @ 2020-07-06 9:42 ` Alexander Gordeev 2020-07-06 9:42 ` [PATCH 2/3] perf bench numa: fix benchmark names Alexander Gordeev 2020-07-06 9:42 ` [PATCH 3/3] perf bench numa: fix wrong benchmark configuration Alexander Gordeev 2 siblings, 0 replies; 5+ messages in thread From: Alexander Gordeev @ 2020-07-06 9:42 UTC (permalink / raw) To: linux-perf-users; +Cc: linux-kernel, Alexander Gordeev The current code assumes that CPUs are evenly spread among NUMA nodes. That is generally incorrect and leads to failure on systems that have different NUMA topology. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> --- tools/perf/bench/numa.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c index 5797253..23e224e 100644 --- a/tools/perf/bench/numa.c +++ b/tools/perf/bench/numa.c @@ -247,12 +247,13 @@ static int is_node_present(int node) */ static bool node_has_cpus(int node) { - struct bitmask *cpu = numa_allocate_cpumask(); + struct bitmask *cpumask = numa_allocate_cpumask(); unsigned int i; - if (cpu && !numa_node_to_cpus(node, cpu)) { - for (i = 0; i < cpu->size; i++) { - if (numa_bitmask_isbitset(cpu, i)) + BUG_ON(!cpumask); + if (!numa_node_to_cpus(node, cpumask)) { + for (i = 0; i < cpumask->size; i++) { + if (numa_bitmask_isbitset(cpumask, i)) return true; } } @@ -288,14 +289,10 @@ static cpu_set_t bind_to_cpu(int target_cpu) static cpu_set_t bind_to_node(int target_node) { - int cpus_per_node = g->p.nr_cpus / nr_numa_nodes(); cpu_set_t orig_mask, mask; int cpu; int ret; - BUG_ON(cpus_per_node * nr_numa_nodes() != g->p.nr_cpus); - BUG_ON(!cpus_per_node); - ret = sched_getaffinity(0, sizeof(orig_mask), &orig_mask); BUG_ON(ret); @@ -305,13 +302,15 @@ static cpu_set_t bind_to_node(int target_node) for (cpu = 0; cpu < g->p.nr_cpus; cpu++) CPU_SET(cpu, &mask); } else { - int cpu_start = (target_node + 0) * cpus_per_node; - int cpu_stop = (target_node + 1) * cpus_per_node; - - BUG_ON(cpu_stop > g->p.nr_cpus); + struct bitmask *cpumask = numa_allocate_cpumask(); - for (cpu = cpu_start; cpu < cpu_stop; cpu++) - CPU_SET(cpu, &mask); + BUG_ON(!cpumask); + if (!numa_node_to_cpus(target_node, cpumask)) { + for (cpu = 0; cpu < (int)cpumask->size; cpu++) { + if (numa_bitmask_isbitset(cpumask, cpu)) + CPU_SET(cpu, &mask); + } + } } ret = sched_setaffinity(0, sizeof(mask), &mask); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/3] perf bench numa: fix benchmark names 2020-07-06 9:42 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev 2020-07-06 9:42 ` [PATCH 1/3] perf bench numa: fix incorrect NUMA toplogy assumption Alexander Gordeev @ 2020-07-06 9:42 ` Alexander Gordeev 2020-07-06 9:42 ` [PATCH 3/3] perf bench numa: fix wrong benchmark configuration Alexander Gordeev 2 siblings, 0 replies; 5+ messages in thread From: Alexander Gordeev @ 2020-07-06 9:42 UTC (permalink / raw) To: linux-perf-users; +Cc: linux-kernel, Alexander Gordeev Several benchmarks have names that do not correspond to their configuration. Fix that and also some whitespace inconsistencies. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> --- tools/perf/bench/numa.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c index 23e224e..6574004 100644 --- a/tools/perf/bench/numa.c +++ b/tools/perf/bench/numa.c @@ -812,12 +812,12 @@ static u64 do_work(u8 *__data, long bytes, int nr, int nr_max, int loop, u64 val } } } else if (!g->p.data_backwards || (nr + loop) & 1) { + /* Process data forwards: */ d0 = data + off; d = data + off + 1; d1 = data + words; - /* Process data forwards: */ for (;;) { if (unlikely(d >= d1)) d = data; @@ -835,7 +835,6 @@ static u64 do_work(u8 *__data, long bytes, int nr, int nr_max, int loop, u64 val d = data + off - 1; d1 = data + words; - /* Process data forwards: */ for (;;) { if (unlikely(d < data)) d = data + words-1; @@ -1732,12 +1731,12 @@ static int run_bench_numa(const char *name, const char **argv) */ static const char *tests[][MAX_ARGS] = { /* Basic single-stream NUMA bandwidth measurements: */ - { "RAM-bw-local,", "mem", "-p", "1", "-t", "1", "-P", "1024", + { "RAM-bw-local,", "mem", "-p", "1", "-t", "1", "-P", "1024", "-C" , "0", "-M", "0", OPT_BW_RAM }, { "RAM-bw-local-NOTHP,", "mem", "-p", "1", "-t", "1", "-P", "1024", "-C" , "0", "-M", "0", OPT_BW_RAM_NOTHP }, - { "RAM-bw-remote,", "mem", "-p", "1", "-t", "1", "-P", "1024", + { "RAM-bw-remote,", "mem", "-p", "1", "-t", "1", "-P", "1024", "-C" , "0", "-M", "1", OPT_BW_RAM }, /* 2-stream NUMA bandwidth measurements: */ @@ -1779,27 +1778,28 @@ static int run_bench_numa(const char *name, const char **argv) "mem", "-p", "8", "-t", "1", "-P", " 512", OPT_BW_NOTHP }, { "16x1-bw-process,", "mem", "-p", "16", "-t", "1", "-P", "256", OPT_BW }, - { " 4x1-bw-thread,", "mem", "-p", "1", "-t", "4", "-T", "256", OPT_BW }, - { " 8x1-bw-thread,", "mem", "-p", "1", "-t", "8", "-T", "256", OPT_BW }, - { "16x1-bw-thread,", "mem", "-p", "1", "-t", "16", "-T", "128", OPT_BW }, - { "32x1-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW }, + { " 1x4-bw-thread,", "mem", "-p", "1", "-t", "4", "-T", "256", OPT_BW }, + { " 1x8-bw-thread,", "mem", "-p", "1", "-t", "8", "-T", "256", OPT_BW }, + { "1x16-bw-thread,", "mem", "-p", "1", "-t", "16", "-T", "128", OPT_BW }, + { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW }, - { " 2x3-bw-thread,", "mem", "-p", "2", "-t", "3", "-P", "512", OPT_BW }, - { " 4x4-bw-thread,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_BW }, - { " 4x6-bw-thread,", "mem", "-p", "4", "-t", "6", "-P", "512", OPT_BW }, - { " 4x8-bw-thread,", "mem", "-p", "4", "-t", "8", "-P", "512", OPT_BW }, - { " 4x8-bw-thread-NOTHP,", + { " 2x3-bw-process,", "mem", "-p", "2", "-t", "3", "-P", "512", OPT_BW }, + { " 4x4-bw-process,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_BW }, + { " 4x6-bw-process,", "mem", "-p", "4", "-t", "6", "-P", "512", OPT_BW }, + { " 4x8-bw-process,", "mem", "-p", "4", "-t", "8", "-P", "512", OPT_BW }, + { " 4x8-bw-process-NOTHP,", "mem", "-p", "4", "-t", "8", "-P", "512", OPT_BW_NOTHP }, - { " 3x3-bw-thread,", "mem", "-p", "3", "-t", "3", "-P", "512", OPT_BW }, - { " 5x5-bw-thread,", "mem", "-p", "5", "-t", "5", "-P", "512", OPT_BW }, + { " 3x3-bw-process,", "mem", "-p", "3", "-t", "3", "-P", "512", OPT_BW }, + { " 5x5-bw-process,", "mem", "-p", "5", "-t", "5", "-P", "512", OPT_BW }, - { "2x16-bw-thread,", "mem", "-p", "2", "-t", "16", "-P", "512", OPT_BW }, - { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-P", "2048", OPT_BW }, + { "2x16-bw-process,", "mem", "-p", "2", "-t", "16", "-P", "512", OPT_BW }, + { "1x32-bw-process,", "mem", "-p", "1", "-t", "32", "-P", "2048", OPT_BW }, - { "numa02-bw,", "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW }, - { "numa02-bw-NOTHP,", "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW_NOTHP }, - { "numa01-bw-thread,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW }, - { "numa01-bw-thread-NOTHP,", + { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW }, + { "1x32-bw-thread-NOTHP,", + "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW_NOTHP }, + { "2x16-bw-thread,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW }, + { "2x16-bw-thread-NOTHP,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW_NOTHP }, }; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] perf bench numa: fix wrong benchmark configuration 2020-07-06 9:42 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev 2020-07-06 9:42 ` [PATCH 1/3] perf bench numa: fix incorrect NUMA toplogy assumption Alexander Gordeev 2020-07-06 9:42 ` [PATCH 2/3] perf bench numa: fix benchmark names Alexander Gordeev @ 2020-07-06 9:42 ` Alexander Gordeev 2 siblings, 0 replies; 5+ messages in thread From: Alexander Gordeev @ 2020-07-06 9:42 UTC (permalink / raw) To: linux-perf-users; +Cc: linux-kernel, Alexander Gordeev This update fixes a wrong number of processes for one benchmark and consolidates two others in a unified way. Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> --- tools/perf/bench/numa.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c index 6574004..c4b24d8 100644 --- a/tools/perf/bench/numa.c +++ b/tools/perf/bench/numa.c @@ -1753,7 +1753,7 @@ static int run_bench_numa(const char *name, const char **argv) { " 1x3-convergence,", "mem", "-p", "1", "-t", "3", "-P", "512", OPT_CONV }, { " 1x4-convergence,", "mem", "-p", "1", "-t", "4", "-P", "512", OPT_CONV }, { " 1x6-convergence,", "mem", "-p", "1", "-t", "6", "-P", "1020", OPT_CONV }, - { " 2x3-convergence,", "mem", "-p", "3", "-t", "3", "-P", "1020", OPT_CONV }, + { " 2x3-convergence,", "mem", "-p", "2", "-t", "3", "-P", "1020", OPT_CONV }, { " 3x3-convergence,", "mem", "-p", "3", "-t", "3", "-P", "1020", OPT_CONV }, { " 4x4-convergence,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_CONV }, { " 4x4-convergence-NOTHP,", @@ -1782,6 +1782,8 @@ static int run_bench_numa(const char *name, const char **argv) { " 1x8-bw-thread,", "mem", "-p", "1", "-t", "8", "-T", "256", OPT_BW }, { "1x16-bw-thread,", "mem", "-p", "1", "-t", "16", "-T", "128", OPT_BW }, { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW }, + { "1x32-bw-thread-NOTHP,", + "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW_NOTHP }, { " 2x3-bw-process,", "mem", "-p", "2", "-t", "3", "-P", "512", OPT_BW }, { " 4x4-bw-process,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_BW }, @@ -1795,9 +1797,6 @@ static int run_bench_numa(const char *name, const char **argv) { "2x16-bw-process,", "mem", "-p", "2", "-t", "16", "-P", "512", OPT_BW }, { "1x32-bw-process,", "mem", "-p", "1", "-t", "32", "-P", "2048", OPT_BW }, - { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW }, - { "1x32-bw-thread-NOTHP,", - "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW_NOTHP }, { "2x16-bw-thread,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW }, { "2x16-bw-thread-NOTHP,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW_NOTHP }, -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 0/3] perf bench numa: fix few minor issues @ 2020-06-29 15:50 Alexander Gordeev 2020-06-29 15:50 ` [PATCH 3/3] perf bench numa: fix wrong benchmark configuration Alexander Gordeev 0 siblings, 1 reply; 5+ messages in thread From: Alexander Gordeev @ 2020-06-29 15:50 UTC (permalink / raw) To: linux-kernel; +Cc: Alexander Gordeev, Arnaldo Carvalho de Melo, Ingo Molnar Hi all, Please, find couple of fixes to the tool. Note, I did not bother fixing leaked memory allocated with numa_allocate_cpumask(). Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Alexander Gordeev (3): perf bench numa: fix incorrect NUMA toplogy assumption perf bench numa: fix benchmark names perf bench numa: fix wrong benchmark configuration tools/perf/bench/numa.c | 72 ++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 37 deletions(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/3] perf bench numa: fix wrong benchmark configuration 2020-06-29 15:50 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev @ 2020-06-29 15:50 ` Alexander Gordeev 0 siblings, 0 replies; 5+ messages in thread From: Alexander Gordeev @ 2020-06-29 15:50 UTC (permalink / raw) To: linux-kernel; +Cc: Alexander Gordeev, Arnaldo Carvalho de Melo, Ingo Molnar This update fixes a wrong number of processes for one benchmark and re-groups two others in a more unified way. Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com> --- tools/perf/bench/numa.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c index 7965a55..30fa6ef 100644 --- a/tools/perf/bench/numa.c +++ b/tools/perf/bench/numa.c @@ -1753,7 +1753,7 @@ static int run_bench_numa(const char *name, const char **argv) { " 1x3-convergence,", "mem", "-p", "1", "-t", "3", "-P", "512", OPT_CONV }, { " 1x4-convergence,", "mem", "-p", "1", "-t", "4", "-P", "512", OPT_CONV }, { " 1x6-convergence,", "mem", "-p", "1", "-t", "6", "-P", "1020", OPT_CONV }, - { " 2x3-convergence,", "mem", "-p", "3", "-t", "3", "-P", "1020", OPT_CONV }, + { " 2x3-convergence,", "mem", "-p", "2", "-t", "3", "-P", "1020", OPT_CONV }, { " 3x3-convergence,", "mem", "-p", "3", "-t", "3", "-P", "1020", OPT_CONV }, { " 4x4-convergence,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_CONV }, { " 4x4-convergence-NOTHP,", @@ -1782,6 +1782,8 @@ static int run_bench_numa(const char *name, const char **argv) { " 1x8-bw-thread,", "mem", "-p", "1", "-t", "8", "-T", "256", OPT_BW }, { "1x16-bw-thread,", "mem", "-p", "1", "-t", "16", "-T", "128", OPT_BW }, { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW }, + { "1x32-bw-thread-NOTHP,", + "mem", "-p", "1", "-t", "32", "-T", "64", OPT_BW_NOTHP }, { " 2x3-bw-process,", "mem", "-p", "2", "-t", "3", "-P", "512", OPT_BW }, { " 4x4-bw-process,", "mem", "-p", "4", "-t", "4", "-P", "512", OPT_BW }, @@ -1795,9 +1797,6 @@ static int run_bench_numa(const char *name, const char **argv) { "2x16-bw-process,", "mem", "-p", "2", "-t", "16", "-P", "512", OPT_BW }, { "1x32-bw-process,", "mem", "-p", "1", "-t", "32", "-P", "2048", OPT_BW }, - { "1x32-bw-thread,", "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW }, - { "1x32-bw-thread-NOTHP,", - "mem", "-p", "1", "-t", "32", "-T", "32", OPT_BW_NOTHP }, { "2x16-bw-thread,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW }, { "2x16-bw-thread-NOTHP,", "mem", "-p", "2", "-t", "16", "-T", "192", OPT_BW_NOTHP }, -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-07-06 9:44 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-06 9:42 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev 2020-07-06 9:42 ` [PATCH 1/3] perf bench numa: fix incorrect NUMA toplogy assumption Alexander Gordeev 2020-07-06 9:42 ` [PATCH 2/3] perf bench numa: fix benchmark names Alexander Gordeev 2020-07-06 9:42 ` [PATCH 3/3] perf bench numa: fix wrong benchmark configuration Alexander Gordeev -- strict thread matches above, loose matches on Subject: below -- 2020-06-29 15:50 [PATCH 0/3] perf bench numa: fix few minor issues Alexander Gordeev 2020-06-29 15:50 ` [PATCH 3/3] perf bench numa: fix wrong benchmark configuration Alexander Gordeev
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).