lkml.org 
[lkml]   [2021]   [Feb]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 3/9] perf tools: Support data block and addr block
    From
    Date


    On 2/5/2021 6:02 AM, Namhyung Kim wrote:
    > On Wed, Feb 3, 2021 at 5:14 AM <kan.liang@linux.intel.com> wrote:
    >>
    >> From: Kan Liang <kan.liang@linux.intel.com>
    >>
    >> Two new data source fields, to indicate the block reasons of a load
    >> instruction, are introduced on the Intel Sapphire Rapids server. The
    >> fields can be used by the memory profiling.
    >>
    >> Add a new sort function, SORT_MEM_BLOCKED, for the two fields.
    >>
    >> For the previous platforms or the block reason is unknown, print "N/A"
    >> for the block reason.
    >>
    >> Add blocked as a default mem sort key for perf report and
    >> perf mem report.
    >>
    >> Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    >> ---
    > [SNIP]
    >> +int perf_mem__blk_scnprintf(char *out, size_t sz, struct mem_info *mem_info)
    >> +{
    >> + size_t l = 0;
    >> + u64 mask = PERF_MEM_BLK_NA;
    >> +
    >> + sz -= 1; /* -1 for null termination */
    >> + out[0] = '\0';
    >> +
    >> + if (mem_info)
    >> + mask = mem_info->data_src.mem_blk;
    >> +
    >> + if (!mask || (mask & PERF_MEM_BLK_NA)) {
    >> + l += scnprintf(out + l, sz - l, " N/A");
    >> + return l;
    >> + }
    >> + if (mask & PERF_MEM_BLK_DATA)
    >> + l += scnprintf(out + l, sz - l, " Data");
    >> + if (mask & PERF_MEM_BLK_ADDR)
    >> + l += scnprintf(out + l, sz - l, " Addr");
    >
    > So this means it's possible to have BLK_DATA and BLK_ADDR
    > together and in that case it'll print "DataAddr", right?

    Yes, it's possible. If so, it will print "Data Addr".

    Thanks,
    Kan
    >
    >
    >> +
    >> + return l;
    >> +}
    >> +
    >> int perf_script__meminfo_scnprintf(char *out, size_t sz, struct mem_info *mem_info)
    >> {
    >> int i = 0;
    >> @@ -348,6 +371,8 @@ int perf_script__meminfo_scnprintf(char *out, size_t sz, struct mem_info *mem_in
    >> i += perf_mem__tlb_scnprintf(out + i, sz - i, mem_info);
    >> i += scnprintf(out + i, sz - i, "|LCK ");
    >> i += perf_mem__lck_scnprintf(out + i, sz - i, mem_info);
    >> + i += scnprintf(out + i, sz - i, "|BLK ");
    >> + i += perf_mem__blk_scnprintf(out + i, sz - i, mem_info);
    >>
    >> return i;
    >> }

    \
     
     \ /
      Last update: 2021-02-05 23:39    [W:17.665 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site