From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Andi Kleen <ak@linux.intel.com>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH v2 0/3] perf record: adapt NUMA awareness to machines with #CPUs > 1K
Date: Mon, 25 Nov 2019 09:04:17 +0300 [thread overview]
Message-ID: <fb356fe9-ac87-71ab-9845-075b3fac3199@linux.intel.com> (raw)
Current implementation of cpu_set_t type by glibc has internal cpu
mask size limitation of no more than 1024 CPUs. This limitation confines
NUMA awareness of Perf tool in record mode, thru --affinity option,
to the first 1024 CPUs on machines with larger amount of CPUs.
This patch set enables Perf tool to overcome 1024 CPUs limitation by
using a dedicated struct mmap_cpu_mask type and applying tool's bitmap
API operations to manipulate affinity masks of the tool's thread and
the mmaped data buffers.
tools bitmap API has been extended with bitmap_free() function and
bitmap_equal() operation whose implementation is derived from the
kernel one.
---
Alexey Budankov (3):
tools bitmap: implement bitmap_equal() operation at bitmap API
perf mmap: declare type for cpu mask of arbitrary length
perf record: adapt affinity to machines with #CPUs > 1K
tools/include/linux/bitmap.h | 30 ++++++++++++++++++++++++++++++
tools/lib/bitmap.c | 15 +++++++++++++++
tools/perf/builtin-record.c | 30 ++++++++++++++++++++++++------
tools/perf/util/mmap.c | 31 +++++++++++++++++++++++++------
tools/perf/util/mmap.h | 11 ++++++++++-
5 files changed, 104 insertions(+), 13 deletions(-)
---
Changes in v2:
- implemented bitmap_free() for symmetry with bitmap_alloc()
- capitalized MMAP_CPU_MASK_BYTES() macro
- returned -1 from perf_mmap__setup_affinity_mask()
- implemented releasing of masks using bitmap_free()
- moved debug printing under -vv option
---
Testing:
tools/perf/perf record -vv --affinity=cpu -- ls
thread mask[8]: empty
Using CPUID GenuineIntel-6-5E-3
intel_pt default config: tsc,mtc,mtc_period=3,psb_period=3,pt,branch
nr_cblocks: 0
affinity: CPU
mmap flush: 1
comp level: 0
------------------------------------------------------------
perf_event_attr:
size 112
{ sample_period, sample_freq } 4000
sample_type IP|TID|TIME|PERIOD
read_format ID
disabled 1
inherit 1
mmap 1
comm 1
freq 1
enable_on_exec 1
task 1
precise_ip 3
sample_id_all 1
exclude_guest 1
mmap2 1
comm_exec 1
ksymbol 1
bpf_event 1
------------------------------------------------------------
sys_perf_event_open: pid 28649 cpu 0 group_fd -1 flags 0x8 = 4
sys_perf_event_open: pid 28649 cpu 1 group_fd -1 flags 0x8 = 5
sys_perf_event_open: pid 28649 cpu 2 group_fd -1 flags 0x8 = 6
sys_perf_event_open: pid 28649 cpu 3 group_fd -1 flags 0x8 = 9
sys_perf_event_open: pid 28649 cpu 4 group_fd -1 flags 0x8 = 10
sys_perf_event_open: pid 28649 cpu 5 group_fd -1 flags 0x8 = 11
sys_perf_event_open: pid 28649 cpu 6 group_fd -1 flags 0x8 = 12
sys_perf_event_open: pid 28649 cpu 7 group_fd -1 flags 0x8 = 13
mmap size 528384B
0x7f1898200010: mmap mask[8]: 0
0x7f18982100d8: mmap mask[8]: 1
0x7f18982201a0: mmap mask[8]: 2
0x7f1898230268: mmap mask[8]: 3
0x7f1898240330: mmap mask[8]: 4
0x7f18982503f8: mmap mask[8]: 5
0x7f18982604c0: mmap mask[8]: 6
0x7f1898270588: mmap mask[8]: 7
------------------------------------------------------------
perf_event_attr:
type 1
size 112
config 0x9
watermark 1
sample_id_all 1
bpf_event 1
{ wakeup_events, wakeup_watermark } 1
------------------------------------------------------------
sys_perf_event_open: pid -1 cpu 0 group_fd -1 flags 0x8 = 14
sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 15
sys_perf_event_open: pid -1 cpu 2 group_fd -1 flags 0x8 = 16
sys_perf_event_open: pid -1 cpu 3 group_fd -1 flags 0x8 = 17
sys_perf_event_open: pid -1 cpu 4 group_fd -1 flags 0x8 = 18
sys_perf_event_open: pid -1 cpu 5 group_fd -1 flags 0x8 = 19
sys_perf_event_open: pid -1 cpu 6 group_fd -1 flags 0x8 = 20
sys_perf_event_open: pid -1 cpu 7 group_fd -1 flags 0x8 = 21
...
Synthesizing TSC conversion information
thread mask[8]: 0
thread mask[8]: 1
thread mask[8]: 2
thread mask[8]: 3
thread mask[8]: 4
arch copy Documentation init kernel MAINTAINERS modules.builtin.modinfo perf.data scripts System.map vmlinux
block COPYING drivers ipc lbuild Makefile modules.order perf.data.old security tools vmlinux.o
certs CREDITS fs Kbuild lib mm Module.symvers README sound usr
config-5.2.7-100.fc29.x86_64 crypto include Kconfig LICENSES modules.builtin net samples stdio virt
thread mask[8]: 5
thread mask[8]: 6
thread mask[8]: 7
thread mask[8]: 0
thread mask[8]: 1
thread mask[8]: 2
thread mask[8]: 3
thread mask[8]: 4
thread mask[8]: 5
thread mask[8]: 6
thread mask[8]: 7
[ perf record: Woken up 0 times to write data ]
thread mask[8]: 0
thread mask[8]: 1
thread mask[8]: 2
thread mask[8]: 3
thread mask[8]: 4
thread mask[8]: 5
thread mask[8]: 6
thread mask[8]: 7
Looking at the vmlinux_path (8 entries long)
Using vmlinux for symbols
[ perf record: Captured and wrote 0.014 MB perf.data (8 samples) ]
--
2.20.1
next reply other threads:[~2019-11-25 6:04 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-25 6:04 Alexey Budankov [this message]
2019-11-25 6:06 ` [PATCH v2 1/3] tools bitmap: implement bitmap_equal() operation at bitmap API Alexey Budankov
2019-11-25 6:07 ` [PATCH v2 2/3] perf mmap: declare type for cpu mask of arbitrary length Alexey Budankov
2019-11-25 6:08 ` [PATCH v2 3/3] perf record: adapt affinity to machines with #CPUs > 1K Alexey Budankov
2019-11-25 9:42 ` Jiri Olsa
2019-11-25 11:13 ` Alexey Budankov
2019-11-25 11:21 ` Jiri Olsa
2019-11-25 11:27 ` Alexey Budankov
2019-11-25 16:55 ` Alexey Budankov
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=fb356fe9-ac87-71ab-9845-075b3fac3199@linux.intel.com \
--to=alexey.budankov@linux.intel.com \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox