Re: [PATCH v1 06/15] perf session: load data directory into tool process memory

From: Alexey Budankov
Date: Tue Oct 13 2020 - 07:30:31 EST



On 12.10.2020 19:49, Alexey Budankov wrote:
>
> On 12.10.2020 19:09, Andi Kleen wrote:
>> On Mon, Oct 12, 2020 at 11:58:58AM +0300, Alexey Budankov wrote:
>>>
>>> Read trace files located at data directory into tool process memory.
>>> Basic analysis support of data directories is provided for report
>>> mode. Raw dump (-D) and aggregated reports are available for data
>>> directories, still with no memory consumption optimizations. However
>>> data directories collected with --compression-level option enabled
>>> can be analyzed with little less memory because trace files are
>>> unmaped from tool process memory after loading collected data.
>>> The implementation is based on the prototype [1], [2].
>>
>> Should credit the author(s) of the prototypes.
>
> Sure. Will explicitly add:
>
> Suggested-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> Suggested-by: Namhyung Kim <namhyung@xxxxxxxxxx>
>
> here and [PATCH v2 15/15], additionally to [1], [2] below.
>
> Thanks for pointing this out!
>
>>>
>>> [1] git clone https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git -b perf/record_threads
>>> [2] https://lore.kernel.org/lkml/20180913125450.21342-1-jolsa@xxxxxxxxxx/
>>>
>>> Signed-off-by: Alexey Budankov <alexey.budankov@xxxxxxxxxxxxxxx>
>>> ---
>>> tools/perf/util/session.c | 48 +++++++++++++++++++++++++++++++++++++++
>>> tools/perf/util/session.h | 1 +
>>> 2 files changed, 49 insertions(+)
>>>
>>> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
>>> index 6afc670fdf0c..0752eec19813 100644
>>> --- a/tools/perf/util/session.c
>>> +++ b/tools/perf/util/session.c
>>> @@ -2212,6 +2212,17 @@ reader__process_events(struct reader *rd, struct perf_session *session,
>>> goto more;
>>>
>>> out:
>>> + if (rd->unmap_file) {
>>> + int i;
>>> +
>>> + for (i = 0; i < NUM_MMAPS; i++) {
>>> + if (mmaps[i]) {
>>> + munmap(mmaps[i], mmap_size);
>>> + mmaps[i] = NULL;
>>
>> Okay so where is the mmap? Would make more sense to put that
>> into the same patch as who adds the mmap. Or is the mmap
>> code already in the perf source? In that case it should
>> probably be some common helper with the existing users.
>
> That mmap is already in the code. Agree, this part of the patch
> can be applied prior the whole patch set.

I take it back. Single trace file can't be unmapped yet since it also
contains not only compressed records but also other records backing
the data for aggregated analysis.

Alexei