Commit f56ef30a authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf expr: Add debug logging for literals



Useful for diagnosing problems with metrics.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: John Garry <john.garry@huawei.com>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Clarke <pc@us.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lore.kernel.org/lkml/20211124001231.3277836-1-irogers@google.com


[ Fixed up perf_cpu conflict, i.e. we need to append ".cpu" to cpu__max_present_cpu() result ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 6dd86469
Loading
Loading
Loading
Loading
+25 −12
Original line number Diff line number Diff line
@@ -405,12 +405,17 @@ double expr_id_data__source_count(const struct expr_id_data *data)
double expr__get_literal(const char *literal)
{
	static struct cpu_topology *topology;
	double result = NAN;

	if (!strcmp("#smt_on", literal))
		return smt_on() > 0 ? 1.0 : 0.0;
	if (!strcmp("#smt_on", literal)) {
		result = smt_on() > 0 ? 1.0 : 0.0;
		goto out;
	}

	if (!strcmp("#num_cpus", literal))
		return cpu__max_present_cpu().cpu;
	if (!strcmp("#num_cpus", literal)) {
		result = cpu__max_present_cpu().cpu;
		goto out;
	}

	/*
	 * Assume that topology strings are consistent, such as CPUs "0-1"
@@ -422,16 +427,24 @@ double expr__get_literal(const char *literal)
		topology = cpu_topology__new();
		if (!topology) {
			pr_err("Error creating CPU topology");
			return NAN;
			goto out;
		}
	}
	if (!strcmp("#num_packages", literal)) {
		result = topology->package_cpus_lists;
		goto out;
	}
	if (!strcmp("#num_dies", literal)) {
		result = topology->die_cpus_lists;
		goto out;
	}
	if (!strcmp("#num_cores", literal)) {
		result = topology->core_cpus_lists;
		goto out;
	}
	if (!strcmp("#num_packages", literal))
		return topology->package_cpus_lists;
	if (!strcmp("#num_dies", literal))
		return topology->die_cpus_lists;
	if (!strcmp("#num_cores", literal))
		return topology->core_cpus_lists;

	pr_err("Unrecognized literal '%s'", literal);
	return NAN;
out:
	pr_debug2("literal: %s = %f\n", literal, result);
	return result;
}