Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758240AbbEFDQD (ORCPT ); Tue, 5 May 2015 23:16:03 -0400 Received: from terminus.zytor.com ([198.137.202.10]:36447 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752863AbbEFDP7 (ORCPT ); Tue, 5 May 2015 23:15:59 -0400 Date: Tue, 5 May 2015 20:15:42 -0700 From: tip-bot for Namhyung Kim Message-ID: Cc: dsahern@gmail.com, acme@redhat.com, mingo@kernel.org, treeze.taeung@gmail.com, penberg@kernel.org, jolsa@redhat.com, namhyung@kernel.org, hpa@zytor.com, js1304@gmail.com, tglx@linutronix.de, a.p.zijlstra@chello.nl, linux-kernel@vger.kernel.org, minchan@kernel.org Reply-To: acme@redhat.com, dsahern@gmail.com, namhyung@kernel.org, penberg@kernel.org, jolsa@redhat.com, treeze.taeung@gmail.com, mingo@kernel.org, js1304@gmail.com, hpa@zytor.com, linux-kernel@vger.kernel.org, minchan@kernel.org, a.p.zijlstra@chello.nl, tglx@linutronix.de In-Reply-To: <1429592107-1807-6-git-send-email-namhyung@kernel.org> References: <1429592107-1807-6-git-send-email-namhyung@kernel.org> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf kmem: Add kmem.default config option Git-Commit-ID: 0c160d495b5616e071bb4f873812e8f473128149 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4075 Lines: 121 Commit-ID: 0c160d495b5616e071bb4f873812e8f473128149 Gitweb: http://git.kernel.org/tip/0c160d495b5616e071bb4f873812e8f473128149 Author: Namhyung Kim AuthorDate: Tue, 21 Apr 2015 13:55:06 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Mon, 4 May 2015 13:34:48 -0300 perf kmem: Add kmem.default config option Currently perf kmem command will select --slab if neither --slab nor --page is given for backward compatibility. Add kmem.default config option to select the default value ('page' or 'slab'). # cat ~/.perfconfig [kmem] default = page # perf kmem stat SUMMARY (page allocator) ======================== Total allocation requests : 1,518 [ 6,096 KB ] Total free requests : 1,431 [ 5,748 KB ] Total alloc+freed requests : 1,330 [ 5,344 KB ] Total alloc-only requests : 188 [ 752 KB ] Total free-only requests : 101 [ 404 KB ] Total allocation failures : 0 [ 0 KB ] ... Signed-off-by: Namhyung Kim Acked-by: Pekka Enberg Cc: David Ahern Cc: Jiri Olsa Cc: Joonsoo Kim Cc: Minchan Kim Cc: Peter Zijlstra Cc: Taeung Song Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/1429592107-1807-6-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-kmem.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 1c66895..828b728 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -28,6 +28,10 @@ static int kmem_slab; static int kmem_page; static long kmem_page_size; +static enum { + KMEM_SLAB, + KMEM_PAGE, +} kmem_default = KMEM_SLAB; /* for backward compatibility */ struct alloc_stat; typedef int (*sort_fn_t)(void *, void *); @@ -1710,7 +1714,8 @@ static int parse_sort_opt(const struct option *opt __maybe_unused, if (!arg) return -1; - if (kmem_page > kmem_slab) { + if (kmem_page > kmem_slab || + (kmem_page == 0 && kmem_slab == 0 && kmem_default == KMEM_PAGE)) { if (caller_flag > alloc_flag) return setup_page_sorting(&page_caller_sort, arg); else @@ -1826,6 +1831,22 @@ static int __cmd_record(int argc, const char **argv) return cmd_record(i, rec_argv, NULL); } +static int kmem_config(const char *var, const char *value, void *cb) +{ + if (!strcmp(var, "kmem.default")) { + if (!strcmp(value, "slab")) + kmem_default = KMEM_SLAB; + else if (!strcmp(value, "page")) + kmem_default = KMEM_PAGE; + else + pr_err("invalid default value ('slab' or 'page' required): %s\n", + value); + return 0; + } + + return perf_default_config(var, value, cb); +} + int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused) { const char * const default_slab_sort = "frag,hit,bytes"; @@ -1862,14 +1883,19 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused) struct perf_session *session; int ret = -1; + perf_config(kmem_config, NULL); argc = parse_options_subcommand(argc, argv, kmem_options, kmem_subcommands, kmem_usage, 0); if (!argc) usage_with_options(kmem_usage, kmem_options); - if (kmem_slab == 0 && kmem_page == 0) - kmem_slab = 1; /* for backward compatibility */ + if (kmem_slab == 0 && kmem_page == 0) { + if (kmem_default == KMEM_SLAB) + kmem_slab = 1; + else + kmem_page = 1; + } if (!strncmp(argv[0], "rec", 3)) { symbol__init(NULL); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/