lkml.org 
[lkml]   [2015]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf mem: Support using -f to override perf.data file ownership
    Commit-ID:  62a1a63a77451dee8fd318a5106ca108d6a8ebcb
    Gitweb: http://git.kernel.org/tip/62a1a63a77451dee8fd318a5106ca108d6a8ebcb
    Author: Yunlong Song <yunlong.song@huawei.com>
    AuthorDate: Thu, 2 Apr 2015 21:47:15 +0800
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Thu, 2 Apr 2015 13:18:49 -0300

    perf mem: Support using -f to override perf.data file ownership

    Enable perf mem to use perf.data when it is not owned by current user or
    root.

    Example:

    # perf mem -t load record ls
    # chown Yunlong.Song:Yunlong.Song perf.data
    # ls -al perf.data
    -rw------- 1 Yunlong.Song Yunlong.Song 16392 Apr 2 14:34 perf.data
    # id
    uid=0(root) gid=0(root) groups=0(root),64(pkcs11)

    Before this patch:

    # perf mem -D report
    File perf.data not owned by current user or root (use -f to override)
    # perf mem -D -f report
    Error: unknown switch `f'

    usage: perf mem [<options>] {record|report}

    -t, --type <type> memory operations(load,store) Default load,store
    -D, --dump-raw-samples
    dump raw samples in ASCII
    -U, --hide-unresolved
    Only display entries resolved to a symbol
    -i, --input <file> input file name
    -C, --cpu <cpu> list of cpus to profile
    -x, --field-separator <separator>
    separator for columns, no spaces will be added
    between columns '.' is reserved.

    As shown above, the -f option does not work at all.

    After this patch:

    # perf mem -D report
    File perf.data not owned by current user or root (use -f to override)
    # perf mem -D -f report
    # PID, TID, IP, ADDR, LOCAL WEIGHT, DSRC, SYMBOL
    39095 39095 0xffffffff81127e40 0x016ffff887f45148338 8 0x68100142
    /proc/kcore:perf_event_aux
    39095 39095 0xffffffff8100a3fe 0xffff89007f8cb7d0 6 0x68100142
    /proc/kcore:native_sched_clock
    39095 39095 0xffffffff81309139 0xffff88bf44c9ded8 6 0x68100142
    /proc/kcore:acpi_map_lookup
    39095 39095 0xffffffff810f8c4c 0xffff89007f8ccd88 6 0x68100142
    /proc/kcore:rcu_nmi_exit
    39095 39095 0xffffffff81136346 0xffff88fea995dd50 6 0x68100142
    /proc/kcore:unlock_page
    39095 39095 0xffffffff812a64a2 0xffff88fea995dcc8 6 0x68100142
    /proc/kcore:half_md4_transform
    39095 39095 0x7f0cf877c7e9 0x25dfb94 6 0x68100142
    /lib64/libc-2.19.so:__readdir64
    39095 39095 0x7f0cf87575a3 0x7f0cf9163731 6 0x68100142
    /lib64/libc-2.19.so:__strcoll_l
    39095 39095 0xffffffff8116910e 0xffffea01c1bfbd50 23 0x68100242
    /proc/kcore:page_remove_rmap

    As shown above, the -f option really works now.

    Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1427982439-27388-7-git-send-email-yunlong.song@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-mem.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
    index b4dcf0b..675216e 100644
    --- a/tools/perf/builtin-mem.c
    +++ b/tools/perf/builtin-mem.c
    @@ -15,6 +15,7 @@ struct perf_mem {
    char const *input_name;
    bool hide_unresolved;
    bool dump_raw;
    + bool force;
    int operation;
    const char *cpu_list;
    DECLARE_BITMAP(cpu_bitmap, MAX_NR_CPUS);
    @@ -120,6 +121,7 @@ static int report_raw_events(struct perf_mem *mem)
    struct perf_data_file file = {
    .path = input_name,
    .mode = PERF_DATA_MODE_READ,
    + .force = mem->force,
    };
    int err = -EINVAL;
    int ret;
    @@ -290,6 +292,7 @@ int cmd_mem(int argc, const char **argv, const char *prefix __maybe_unused)
    "separator",
    "separator for columns, no spaces will be added"
    " between columns '.' is reserved."),
    + OPT_BOOLEAN('f', "force", &mem.force, "don't complain, do it"),
    OPT_END()
    };
    const char *const mem_subcommands[] = { "record", "report", NULL };

    \
     
     \ /
      Last update: 2015-04-03 07:41    [W:4.071 / U:1.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site