From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756962AbcCCXu4 (ORCPT ); Thu, 3 Mar 2016 18:50:56 -0500 Received: from LGEAMRELO13.lge.com ([156.147.23.53]:38401 "EHLO lgeamrelo13.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751467AbcCCXuz (ORCPT ); Thu, 3 Mar 2016 18:50:55 -0500 X-Original-SENDERIP: 156.147.1.151 X-Original-MAILFROM: namhyung@kernel.org X-Original-SENDERIP: 165.244.98.150 X-Original-MAILFROM: namhyung@kernel.org X-Original-SENDERIP: 10.177.227.17 X-Original-MAILFROM: namhyung@kernel.org Date: Fri, 4 Mar 2016 08:50:51 +0900 From: Namhyung Kim To: Arnaldo Carvalho de Melo CC: Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , David Ahern , Andi Kleen , Stephane Eranian , Wang Nan Subject: Re: [RFC] Re: [PATCHSET 0/8] perf tools: Support multiple keys in a single hierarchy level (v1) Message-ID: <20160303235051.GA16631@sejong> References: <1456935128-31299-1-git-send-email-namhyung@kernel.org> <20160302162507.GT3604@kernel.org> <20160302231636.GA19162@sejong> <20160303130815.GU3604@kernel.org> MIME-Version: 1.0 In-Reply-To: <20160303130815.GU3604@kernel.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-MIMETrack: Itemize by SMTP Server on LGEKRMHUB08/LGE/LG Group(Release 8.5.3FP6|November 21, 2013) at 2016/03/04 08:50:52, Serialize by Router on LGEKRMHUB08/LGE/LG Group(Release 8.5.3FP6|November 21, 2013) at 2016/03/04 08:50:52, Serialize complete at 2016/03/04 08:50:52 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 Hi Arnaldo, On Thu, Mar 03, 2016 at 10:08:15AM -0300, Arnaldo Carvalho de Melo wrote: > Em Thu, Mar 03, 2016 at 08:16:36AM +0900, Namhyung Kim escreveu: > > On Wed, Mar 02, 2016 at 01:25:07PM -0300, Arnaldo Carvalho de Melo wrote: > > > Em Thu, Mar 03, 2016 at 01:12:00AM +0900, Namhyung Kim escreveu: > > > > This implements what Arnaldo suggested in previous discussion of > > > > hierarchy patchset [1]. Originally each level in a hierarchy can have > > > > a single sort key in it, but with patches it's possible to have more > > > > than one sort keys. I added the struct perf_hpp_list_node and carry > > > > it to group output formats (hpp_fmt) in a single level. > > > > > I used ':' character instead of '+' as suggested since the '+' was > > > > also used to extend existing sort keys (like -s '+cpu'). > > > > Could we use ';' instead? That is associated with lists as well, i.e.: > > > > perf report --hierarchy -s prev_pid;prev_comm,next_pid;next_comm > > > > What do you think? Others? > > > The ';' is interpreted by shell first, so it needs to be quoted. > > > $ perf report -s comm,dso;sym > > bash: sym: command not found > > Right, but this is not some really common operation, so asking for it to > be quoted is not such an unreasonable demand, and I continue thinking > that ':' should be left for other purposes, ',' and ';' are better > suited for expressing lists. > > We will/have stumble/d in this more times, like when we added { for groups: > > # perf record -e cycles,instructions usleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.017 MB perf.data (4 samples) ] > # perf report --header-only | grep group > # > # perf record -e {cycles,instructions} usleep 1 > Workload failed: No such file or directory > # perf record -e '{cycles,instructions}' usleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.017 MB perf.data (4 samples) ] > # perf report --header-only | grep group > # group: {cycles,instructions} > # > > We should try to use tokens that already have some strong meaning > associated to them instead of using those that are more easily > available, otherwise our mumbo jumbo will grow even more unwieldly 8-/ > > In fact I think that in this case we could even make it look more like > natural languages and use: > > perf report --hierarchy -s 'prev_pid,prev_comm;next_pid,next_comm' > > To ask for: > > prev_pid prev_comm > next_pid next_comm > - 1234 bash > 5678 firefox > + 8912 hexchat > > I.e. if ';' is present, it is the separator for each hierarchy level, > with ',' being used for stating the per-hierarchy level fields. If it's not a common operation and we have used '{ }' for the event groups, why not using it here too? $ perf report --hierarchy -s '{prev_pid,prev_comm},{next_pid,next_comm}' It's more verbose but more intuitive IMHO. Thanks, Namhyung