Re: [PATCH V4 0/6] Add the page size in the perf record (user tools)

From: Liang, Kan
Date: Tue Jan 12 2021 - 14:15:38 EST




On 1/12/2021 12:24 AM, Athira Rajeev wrote:


On 06-Jan-2021, at 1:27 AM, kan.liang@xxxxxxxxxxxxxxx wrote:

From: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>

Changes since V3:
- Rebase on top of acme's perf/core branch
commit c07b45a355ee ("perf record: Tweak "Lowering..." warning in record_opts__config_freq")

Changes since V2:
- Rebase on top of acme perf/core branch
commit eec7b53d5916 ("perf test: Make sample-parsing test aware of PERF_SAMPLE_{CODE,DATA}_PAGE_SIZE")
- Use unit_number__scnprintf() in get_page_size_name()
- Emit warning about kernel not supporting the code page size sample_type bit

Changes since V1:
- Fix the compile warning with GCC 10
- Add Acked-by from Namhyung Kim

Current perf can report both virtual addresses and physical addresses,
but not the page size. Without the page size information of the utilized
page, users cannot decide whether to promote/demote large pages to
optimize memory usage.

The kernel patches have been merged into tip perf/core branch,
commit 8d97e71811aa ("perf/core: Add PERF_SAMPLE_DATA_PAGE_SIZE")
commit 76a5433f95f3 ("perf/x86/intel: Support PERF_SAMPLE_DATA_PAGE_SIZE")
commit 4cb6a42e4c4b ("powerpc/perf: Support PERF_SAMPLE_DATA_PAGE_SIZE")
commit 995f088efebe ("perf/core: Add support for PERF_SAMPLE_CODE_PAGE_SIZE")
commit 51b646b2d9f8 ("perf,mm: Handle non-page-table-aligned hugetlbfs")

and Peter's perf/core branch
commit 524680ce47a1 ("mm/gup: Provide gup_get_pte() more generic")
commit 44a35d6937d2 ("mm: Introduce pXX_leaf_size()")
commit 2f1e2f091ad0 ("perf/core: Fix arch_perf_get_page_size()")
commit 7649e44aacdd ("arm64/mm: Implement pXX_leaf_size() support")
commit 1df1ae7e262c ("sparc64/mm: Implement pXX_leaf_size() support")

This patch set is to enable the page size support in user tools.

Hi Kan Liang,

I am trying to check this series on powerpc.

# perf mem --phys-data --data-page-size record <workload>

To my observation, some of the samples returned zero size and comes as ’N/A’ in the perf report

# perf mem --phys-data --data-page-size report

For fetching the page size, though initially there was a weak function added ( as arch_perf_get_page_size ) here:

https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/commit/?h=perf/core&id=51b646b2d9f84d6ff6300e3c1d09f2be4329a424

later I see it got removed here:

https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/commit/?h=perf/core&id=8af26be062721e52eba1550caf50b712f774c5fd

I picked kernel changes from git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git , or I am missing something ?

I believe all the kernel changes have been merged.

According to the commit message of the recent changes, only Power/8xxx is supported for power for now. I guess that may be the reason of some 'N/A's.
https://lore.kernel.org/patchwork/cover/1345521/

Thanks,
Kan



Thanks
Athira


Kan Liang (3):
perf mem: Clean up output format
perf mem: Support data page size
perf tools: Add support for PERF_SAMPLE_CODE_PAGE_SIZE

Stephane Eranian (3):
perf script: Add support for PERF_SAMPLE_CODE_PAGE_SIZE
perf report: Add support for PERF_SAMPLE_CODE_PAGE_SIZE
perf test: Add test case for PERF_SAMPLE_CODE_PAGE_SIZE

tools/perf/Documentation/perf-mem.txt | 3 +
tools/perf/Documentation/perf-record.txt | 3 +
tools/perf/Documentation/perf-report.txt | 1 +
tools/perf/Documentation/perf-script.txt | 2 +-
tools/perf/builtin-mem.c | 111 +++++++++++-----------
tools/perf/builtin-record.c | 2 +
tools/perf/builtin-script.c | 13 ++-
tools/perf/tests/sample-parsing.c | 4 +
tools/perf/util/event.h | 1 +
tools/perf/util/evsel.c | 18 +++-
tools/perf/util/evsel.h | 1 +
tools/perf/util/hist.c | 2 +
tools/perf/util/hist.h | 1 +
tools/perf/util/perf_event_attr_fprintf.c | 2 +-
tools/perf/util/record.h | 1 +
tools/perf/util/session.c | 3 +
tools/perf/util/sort.c | 26 +++++
tools/perf/util/sort.h | 2 +
tools/perf/util/synthetic-events.c | 8 ++
19 files changed, 144 insertions(+), 60 deletions(-)

--
2.25.1