lkml.org 
[lkml]   [2009]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/urgent] perf kmem: Show usage if no option is specified
    Commit-ID:  90b86a9f7dc22e7ff8e8c79ed553860454ff8dd9
    Gitweb: http://git.kernel.org/tip/90b86a9f7dc22e7ff8e8c79ed553860454ff8dd9
    Author: Li Zefan <lizf@cn.fujitsu.com>
    AuthorDate: Thu, 10 Dec 2009 15:21:57 +0800
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Thu, 10 Dec 2009 08:30:27 +0100

    perf kmem: Show usage if no option is specified

    As Ingo suggested, make "perf kmem" show help information.
    "perf kmem stat [--caller] [--alloc] .." will show memory
    statistics.

    Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
    LKML-Reference: <4B20A195.8030106@cn.fujitsu.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    tools/perf/Documentation/perf-kmem.txt | 13 +++++---
    tools/perf/builtin-kmem.c | 52 ++++++++++++++++++--------------
    2 files changed, 37 insertions(+), 28 deletions(-)

    diff --git a/tools/perf/Documentation/perf-kmem.txt b/tools/perf/Documentation/perf-kmem.txt
    index 44b0ce3..eac4d85 100644
    --- a/tools/perf/Documentation/perf-kmem.txt
    +++ b/tools/perf/Documentation/perf-kmem.txt
    @@ -8,16 +8,16 @@ perf-kmem - Tool to trace/measure kernel memory(slab) properties
    SYNOPSIS
    --------
    [verse]
    -'perf kmem' {record} [<options>]
    +'perf kmem' {record|stat} [<options>]

    DESCRIPTION
    -----------
    -There's two variants of perf kmem:
    +There are two variants of perf kmem:

    'perf kmem record <command>' to record the kmem events
    of an arbitrary workload.

    - 'perf kmem' to report kernel memory statistics.
    + 'perf kmem stat' to report kernel memory statistics.

    OPTIONS
    -------
    @@ -25,8 +25,11 @@ OPTIONS
    --input=<file>::
    Select the input file (default: perf.data)

    ---stat=<caller|alloc>::
    - Select per callsite or per allocation statistics
    +--caller::
    + Show per-callsite statistics
    +
    +--alloc::
    + Show per-allocation statistics

    -s <key[,key2...]>::
    --sort=<key[,key2...]>::
    diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
    index 7551a5f..1b04787 100644
    --- a/tools/perf/builtin-kmem.c
    +++ b/tools/perf/builtin-kmem.c
    @@ -526,7 +526,7 @@ static int __cmd_kmem(void)
    }

    static const char * const kmem_usage[] = {
    - "perf kmem [<options>] {record}",
    + "perf kmem [<options>] {record|stat}",
    NULL
    };

    @@ -686,18 +686,17 @@ static int parse_sort_opt(const struct option *opt __used,
    return 0;
    }

    -static int parse_stat_opt(const struct option *opt __used,
    +static int parse_caller_opt(const struct option *opt __used,
    const char *arg, int unset __used)
    {
    - if (!arg)
    - return -1;
    + caller_flag = (alloc_flag + 1);
    + return 0;
    +}

    - if (strcmp(arg, "alloc") == 0)
    - alloc_flag = (caller_flag + 1);
    - else if (strcmp(arg, "caller") == 0)
    - caller_flag = (alloc_flag + 1);
    - else
    - return -1;
    +static int parse_alloc_opt(const struct option *opt __used,
    + const char *arg, int unset __used)
    +{
    + alloc_flag = (caller_flag + 1);
    return 0;
    }

    @@ -722,14 +721,17 @@ static int parse_line_opt(const struct option *opt __used,
    static const struct option kmem_options[] = {
    OPT_STRING('i', "input", &input_name, "file",
    "input file name"),
    - OPT_CALLBACK(0, "stat", NULL, "<alloc>|<caller>",
    - "stat selector, Pass 'alloc' or 'caller'.",
    - parse_stat_opt),
    + OPT_CALLBACK_NOOPT(0, "caller", NULL, NULL,
    + "show per-callsite statistics",
    + parse_caller_opt),
    + OPT_CALLBACK_NOOPT(0, "alloc", NULL, NULL,
    + "show per-allocation statistics",
    + parse_alloc_opt),
    OPT_CALLBACK('s', "sort", NULL, "key[,key2...]",
    "sort by keys: ptr, call_site, bytes, hit, pingpong, frag",
    parse_sort_opt),
    OPT_CALLBACK('l', "line", NULL, "num",
    - "show n lins",
    + "show n lines",
    parse_line_opt),
    OPT_BOOLEAN(0, "raw-ip", &raw_ip, "show raw ip instead of symbol"),
    OPT_END()
    @@ -773,18 +775,22 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __used)

    argc = parse_options(argc, argv, kmem_options, kmem_usage, 0);

    - if (argc && !strncmp(argv[0], "rec", 3))
    - return __cmd_record(argc, argv);
    - else if (argc)
    + if (!argc)
    usage_with_options(kmem_usage, kmem_options);

    - if (list_empty(&caller_sort))
    - setup_sorting(&caller_sort, default_sort_order);
    - if (list_empty(&alloc_sort))
    - setup_sorting(&alloc_sort, default_sort_order);
    + if (!strncmp(argv[0], "rec", 3)) {
    + return __cmd_record(argc, argv);
    + } else if (!strcmp(argv[0], "stat")) {
    + setup_cpunode_map();
    +
    + if (list_empty(&caller_sort))
    + setup_sorting(&caller_sort, default_sort_order);
    + if (list_empty(&alloc_sort))
    + setup_sorting(&alloc_sort, default_sort_order);

    - setup_cpunode_map();
    + return __cmd_kmem();
    + }

    - return __cmd_kmem();
    + return 0;
    }


    \
     
     \ /
      Last update: 2009-12-10 08:53    [W:0.027 / U:29.880 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site