qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v9 4/6] qtest/numa-test: Correct CPU and NUMA association in


From: Igor Mammedov
Subject: Re: [PATCH v9 4/6] qtest/numa-test: Correct CPU and NUMA association in aarch64_numa_cpu()
Date: Wed, 4 May 2022 15:46:37 +0200

On Tue,  3 May 2022 22:03:02 +0800
Gavin Shan <gshan@redhat.com> wrote:

> In aarch64_numa_cpu(), the CPU and NUMA association is something
> like below. Two threads in the same core/cluster/socket are
> associated with two individual NUMA nodes, which is unreal as
> Igor Mammedov mentioned. We don't expect the association to break
> NUMA-to-socket boundary, which matches with the real world.
> 
>     NUMA-node  socket  cluster   core   thread
>     ------------------------------------------
>         0       0        0        0      0
>         1       0        0        0      1
> 
> This corrects the topology for CPUs and their association with
> NUMA nodes. After this patch is applied, the CPU and NUMA
> association becomes something like below, which looks real.
> Besides, socket/cluster/core/thread IDs are all checked when
> the NUMA node IDs are verified. It helps to check if the CPU
> topology is properly populated or not.
> 
>     NUMA-node  socket  cluster   core   thread
>     ------------------------------------------
>        0        1        0        0       0
>        1        0        0        0       0

I'd place 'socket 1' on node 0, so it wouldn't look odd.
But it probably doesn't matter, so

Acked-by: Igor Mammedov <imammedo@redhat.com>

> Suggested-by: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Gavin Shan <gshan@redhat.com>
> ---
>  tests/qtest/numa-test.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c
> index aeda8c774c..32e35daaae 100644
> --- a/tests/qtest/numa-test.c
> +++ b/tests/qtest/numa-test.c
> @@ -224,17 +224,17 @@ static void aarch64_numa_cpu(const void *data)
>      g_autofree char *cli = NULL;
>  
>      cli = make_cli(data, "-machine "
> -        "smp.cpus=2,smp.sockets=1,smp.clusters=1,smp.cores=1,smp.threads=2 "
> +        "smp.cpus=2,smp.sockets=2,smp.clusters=1,smp.cores=1,smp.threads=1 "
>          "-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 "
> -        "-numa cpu,node-id=1,thread-id=0 "
> -        "-numa cpu,node-id=0,thread-id=1");
> +        "-numa cpu,node-id=0,socket-id=1,cluster-id=0,core-id=0,thread-id=0 "
> +        "-numa 
> cpu,node-id=1,socket-id=0,cluster-id=0,core-id=0,thread-id=0");
>      qts = qtest_init(cli);
>      cpus = get_cpus(qts, &resp);
>      g_assert(cpus);
>  
>      while ((e = qlist_pop(cpus))) {
>          QDict *cpu, *props;
> -        int64_t thread, node;
> +        int64_t socket, cluster, core, thread, node;
>  
>          cpu = qobject_to(QDict, e);
>          g_assert(qdict_haskey(cpu, "props"));
> @@ -242,12 +242,18 @@ static void aarch64_numa_cpu(const void *data)
>  
>          g_assert(qdict_haskey(props, "node-id"));
>          node = qdict_get_int(props, "node-id");
> +        g_assert(qdict_haskey(props, "socket-id"));
> +        socket = qdict_get_int(props, "socket-id");
> +        g_assert(qdict_haskey(props, "cluster-id"));
> +        cluster = qdict_get_int(props, "cluster-id");
> +        g_assert(qdict_haskey(props, "core-id"));
> +        core = qdict_get_int(props, "core-id");
>          g_assert(qdict_haskey(props, "thread-id"));
>          thread = qdict_get_int(props, "thread-id");
>  
> -        if (thread == 0) {
> +        if (socket == 0 && cluster == 0 && core == 0 && thread == 0) {
>              g_assert_cmpint(node, ==, 1);
> -        } else if (thread == 1) {
> +        } else if (socket == 1 && cluster == 0 && core == 0 && thread == 0) {
>              g_assert_cmpint(node, ==, 0);
>          } else {
>              g_assert(false);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]