From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: Clark Williams <williams@redhat.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Adrian Hunter <adrian.hunter@intel.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Dave Hansen <dave.hansen@linux.intel.com>,
"H . Peter Anvin" <hpa@zytor.com>, Jiri Olsa <jolsa@redhat.com>,
Joerg Roedel <joro@8bytes.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
x86@kernel.org, Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 04/18] perf machine: Add nr_cpus_avail()
Date: Wed, 23 May 2018 17:20:52 -0300 [thread overview]
Message-ID: <20180523202106.17286-5-acme@kernel.org> (raw)
In-Reply-To: <20180523202106.17286-1-acme@kernel.org>
From: Adrian Hunter <adrian.hunter@intel.com>
Add a function to return the number of the machine's available CPUs.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/1526986485-6562-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/env.c | 13 +++++++++++++
tools/perf/util/env.h | 1 +
tools/perf/util/machine.c | 5 +++++
tools/perf/util/machine.h | 1 +
4 files changed, 20 insertions(+)
diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
index 319fb0a0d05e..59f38c7693f8 100644
--- a/tools/perf/util/env.c
+++ b/tools/perf/util/env.c
@@ -106,11 +106,24 @@ static int perf_env__read_arch(struct perf_env *env)
return env->arch ? 0 : -ENOMEM;
}
+static int perf_env__read_nr_cpus_avail(struct perf_env *env)
+{
+ if (env->nr_cpus_avail == 0)
+ env->nr_cpus_avail = cpu__max_present_cpu();
+
+ return env->nr_cpus_avail ? 0 : -ENOENT;
+}
+
const char *perf_env__raw_arch(struct perf_env *env)
{
return env && !perf_env__read_arch(env) ? env->arch : "unknown";
}
+int perf_env__nr_cpus_avail(struct perf_env *env)
+{
+ return env && !perf_env__read_nr_cpus_avail(env) ? env->nr_cpus_avail : 0;
+}
+
void cpu_cache_level__free(struct cpu_cache_level *cache)
{
free(cache->type);
diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h
index 62e193948608..1f3ccc368530 100644
--- a/tools/perf/util/env.h
+++ b/tools/perf/util/env.h
@@ -77,5 +77,6 @@ void cpu_cache_level__free(struct cpu_cache_level *cache);
const char *perf_env__arch(struct perf_env *env);
const char *perf_env__raw_arch(struct perf_env *env);
+int perf_env__nr_cpus_avail(struct perf_env *env);
#endif /* __PERF_ENV_H */
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index e011a7160380..f62ecd9c36e8 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -2305,6 +2305,11 @@ bool machine__is(struct machine *machine, const char *arch)
return machine && !strcmp(perf_env__raw_arch(machine->env), arch);
}
+int machine__nr_cpus_avail(struct machine *machine)
+{
+ return machine ? perf_env__nr_cpus_avail(machine->env) : 0;
+}
+
int machine__get_kernel_start(struct machine *machine)
{
struct map *map = machine__kernel_map(machine);
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index b31d33b5aa2a..2d2b092ba753 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -189,6 +189,7 @@ static inline bool machine__is_host(struct machine *machine)
}
bool machine__is(struct machine *machine, const char *arch);
+int machine__nr_cpus_avail(struct machine *machine);
struct thread *__machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
struct thread *machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
--
2.14.3
next prev parent reply other threads:[~2018-05-23 20:20 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-23 20:20 [GIT PULL 00/18] perf/core improvements Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 01/18] perf evlist: Introduce force_leader() method Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 02/18] perf report: Use perf_evlist__force_leader to support '--group' Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 03/18] perf annotate: Support '--group' option Arnaldo Carvalho de Melo
2018-05-23 20:20 ` Arnaldo Carvalho de Melo [this message]
2018-05-23 20:20 ` [PATCH 05/18] perf machine: Workaround missing maps for x86 PTI entry trampolines Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 06/18] perf machine: Fix map_groups__split_kallsyms() for entry trampoline symbols Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 07/18] perf machine: Allow for extra kernel maps Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 08/18] perf machine: Create maps for x86 PTI entry trampolines Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 09/18] perf machine: Synthesize and process mmap events " Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 10/18] perf annotate: Show group event string for stdio Arnaldo Carvalho de Melo
2018-05-23 20:20 ` [PATCH 11/18] perf kcore_copy: Keep phdr data in a list Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 12/18] perf kcore_copy: Keep a count of phdrs Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 13/18] perf kcore_copy: Calculate offset from phnum Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 14/18] perf kcore_copy: Layout sections Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 15/18] perf kcore_copy: Iterate phdrs Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 16/18] perf kcore_copy: Get rid of kernel_map Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 17/18] perf kcore_copy: Copy x86 PTI entry trampoline sections Arnaldo Carvalho de Melo
2018-05-23 20:21 ` [PATCH 18/18] perf kcore_copy: Amend the offset of sections that remap kernel text Arnaldo Carvalho de Melo
2018-05-24 5:32 ` [GIT PULL 00/18] perf/core improvements Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180523202106.17286-5-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=williams@redhat.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.