I was alerted by people trying to use the PERF_RECORD_MMAP2
record to disambiguate virtual address mappings that there is a case
where the record does not contain enough information.
As you know, the MMAP2 record adds the major, minor, ino number,
inode generation numbers to a mapping. But it does that only for
file or pseudo -file backed mappings. That covers file mmaps and also
SYSV shared memory segments.
However there is a another kind of situation that arises in some
multi-process benchmarks where a region of memory is cloned
using VM_CLONE. As such, the virtual addresses match between
the processes but the major, minor, inode, inode generation fields
are all zeroes because there is no inode associated with the mapping.
Yet, it is important for the tool to know the mappings between the
processes are pointing to the same physical data.
We need to cover this case and I am seeking for advice on how to
best address this need given that we discarded using the plain physical
address for disambiguation.