diff options
author | L Pereira <l@tia.mat.br> | 2021-11-07 22:47:24 -0800 |
---|---|---|
committer | L Pereira <l@tia.mat.br> | 2021-11-07 22:47:24 -0800 |
commit | 78dbd1bf5189a040c105ae05d1c0d2d414375ca8 (patch) | |
tree | 22e10a26d6915458c72ba977a819e5c104805036 /modules | |
parent | 66227e5a35b86869bcf3c96ba9cac8d48cb1cdef (diff) |
Use structured data to rebuild CPU Description as well
Diffstat (limited to 'modules')
-rw-r--r-- | modules/benchmark/bench_results.c | 41 | ||||
-rw-r--r-- | modules/devices.c | 2 |
2 files changed, 42 insertions, 1 deletions
diff --git a/modules/benchmark/bench_results.c b/modules/benchmark/bench_results.c index 9820b40a..0f3533b8 100644 --- a/modules/benchmark/bench_results.c +++ b/modules/benchmark/bench_results.c @@ -354,6 +354,45 @@ static gchar *get_cpu_config(JsonObject *machine) return g_string_free(output, FALSE); } +static gchar *get_cpu_desc(JsonObject *machine) +{ + int num_cpus = json_get_int(machine, "NumCpus"); + + if (!num_cpus) + return json_get_string_dup(machine, "CpuDesc"); + + /* FIXME: This is adapted from processor_describe_default() in + * devices.c! */ + + int num_cores = json_get_int(machine, "NumCores"); + int num_threads = json_get_int(machine, "NumThreads"); + int num_nodes = json_get_int(machine, "NumNodes"); + const char *packs_fmt = + ngettext("%d physical processor", "%d physical processors", num_cpus); + const char *cores_fmt = ngettext("%d core", "%d cores", num_cores); + const char *threads_fmt = ngettext("%d thread", "%d threads", num_threads); + char *full_fmt, *ret; + + if (num_nodes > 1) { + const char *nodes_fmt = + ngettext("%d NUMA node", "%d NUMA nodes", num_nodes); + + full_fmt = g_strdup_printf( + _(/*/NP procs; NC cores across NN nodes; NT threads*/ + "%s; %s across %s; %s"), + packs_fmt, cores_fmt, nodes_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, num_cpus, num_cores * num_nodes, num_nodes, num_threads); + } else { + full_fmt = + g_strdup_printf(_(/*/NP procs; NC cores; NT threads*/ "%s; %s; %s"), + packs_fmt, cores_fmt, threads_fmt); + ret = g_strdup_printf(full_fmt, num_cpus, num_cores, num_threads); + } + + free(full_fmt); + return ret; +} + bench_result *bench_result_benchmarkjson(const gchar *bench_name, JsonNode *node) { @@ -395,7 +434,7 @@ bench_result *bench_result_benchmarkjson(const gchar *bench_name, .board = json_get_string_dup(machine, "Board"), .memory_kiB = json_get_int(machine, "MemoryInKiB"), .cpu_name = json_get_string_dup(machine, "CpuName"), - .cpu_desc = json_get_string_dup(machine, "CpuDesc"), + .cpu_desc = get_cpu_desc(machine), .cpu_config = get_cpu_config(machine), .ogl_renderer = json_get_string_dup(machine, "OpenGlRenderer"), .gpu_desc = json_get_string_dup(machine, "GpuDesc"), diff --git a/modules/devices.c b/modules/devices.c index d13334cc..0f33af48 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -173,6 +173,8 @@ gchar *processor_describe_default(GSList * processors) cpu_procs_cores_threads_nodes(&packs, &cores, &threads, &nodes); + /* NOTE: If this is changed, look at get_cpu_desc() in bench_results.c! */ + /* if topology info was available, else fallback to old method */ if (cores > 0) { packs_fmt = ngettext("%d physical processor", "%d physical processors", packs); |