)]}'
{
  "commit": "6a4bb04caacc8c2d06f345130e9086e3fea38ca7",
  "tree": "96a4c4e049c303a92ababf2807b5b8044f55bf74",
  "parents": [
    "f5b1135bf79557563a814e53ecd610cce663c1e3"
  ],
  "author": {
    "name": "Jiri Olsa",
    "email": "jolsa@redhat.com",
    "time": "Wed Aug 08 12:22:36 2012 +0200"
  },
  "committer": {
    "name": "Arnaldo Carvalho de Melo",
    "email": "acme@redhat.com",
    "time": "Tue Aug 14 17:03:49 2012 -0300"
  },
  "message": "perf tools: Enable grouping logic for parsed events\n\nThis patch adds a functionality that allows to create event groups\nbased on the way they are specified on the command line. Adding\nfunctionality to the \u0027{}\u0027 group syntax introduced in earlier patch.\n\nThe current \u0027--group/-g\u0027 option behaviour remains intact. If you\nspecify it for record/stat/top command, all the specified events\nbecome members of a single group with the first event as a group\nleader.\n\nWith the new \u0027{}\u0027 group syntax you can create group like:\n  # perf record -e \u0027{cycles,faults}\u0027 ls\n\nresulting in single event group containing \u0027cycles\u0027 and \u0027faults\u0027\nevents, with cycles event as group leader.\n\nAll groups are created with regards to threads and cpus. Thus\nrecording an event group within a 2 threads on server with\n4 CPUs will create 8 separate groups.\n\nExamples (first event in brackets is group leader):\n\n  # 1 group (cpu-clock,task-clock)\n  perf record --group -e cpu-clock,task-clock ls\n  perf record -e \u0027{cpu-clock,task-clock}\u0027 ls\n\n  # 2 groups (cpu-clock,task-clock) (minor-faults,major-faults)\n  perf record -e \u0027{cpu-clock,task-clock},{minor-faults,major-faults}\u0027 ls\n\n  # 1 group (cpu-clock,task-clock,minor-faults,major-faults)\n  perf record --group -e cpu-clock,task-clock -e minor-faults,major-faults ls\n  perf record -e \u0027{cpu-clock,task-clock,minor-faults,major-faults}\u0027 ls\n\n  # 2 groups (cpu-clock,task-clock) (minor-faults,major-faults)\n  perf record -e \u0027{cpu-clock,task-clock} -e \u0027{minor-faults,major-faults}\u0027 \\\n   -e instructions ls\n\n  # 1 group\n  # (cpu-clock,task-clock,minor-faults,major-faults,instructions)\n  perf record --group -e cpu-clock,task-clock \\\n   -e minor-faults,major-faults -e instructions ls perf record -e\n\u0027{cpu-clock,task-clock,minor-faults,major-faults,instructions}\u0027 ls\n\nIt\u0027s possible to use standard event modifier for a group, which spans\nover all events in the group and updates each event modifier settings,\nfor example:\n\n  # perf record -r \u0027{faults:k,cache-references}:p\u0027\n\nresulting in \u0027:kp\u0027 modifier being used for \u0027faults\u0027 and \u0027:p\u0027 modifier\nbeing used for \u0027cache-references\u0027 event.\n\nReviewed-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ulrich Drepper \u003cdrepper@gmail.com\u003e\nLink: http://lkml.kernel.org/n/tip-ho42u0wcr8mn1otkalqi13qp@git.kernel.org\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "22dd05d3680ce4e81281e00938cc3a256451ec51",
      "old_mode": 33188,
      "old_path": "tools/perf/builtin-record.c",
      "new_id": "f5b6137c0f7e2a231bd335ad997144e5d53ded02",
      "new_mode": 33188,
      "new_path": "tools/perf/builtin-record.c"
    },
    {
      "type": "modify",
      "old_id": "861f0aec77aeacf099653d87ca9c6df9b6f2787c",
      "old_mode": 33188,
      "old_path": "tools/perf/builtin-stat.c",
      "new_id": "23908a85bba9f14b35cad0258878d5ffb3aabafe",
      "new_mode": 33188,
      "new_path": "tools/perf/builtin-stat.c"
    },
    {
      "type": "modify",
      "old_id": "1d592f5cbea9776fcc437e012dc20c1911fd7137",
      "old_mode": 33188,
      "old_path": "tools/perf/builtin-test.c",
      "new_id": "9a479b68fc9bf4175a2faf9955ccb7ed44d4d0a5",
      "new_mode": 33188,
      "new_path": "tools/perf/builtin-test.c"
    },
    {
      "type": "modify",
      "old_id": "e45a1ba61722808a16eadadfa7125cfc207291c2",
      "old_mode": 33188,
      "old_path": "tools/perf/builtin-top.c",
      "new_id": "392d2192b75e56c6dda5fe426f2d6129e855edde",
      "new_mode": 33188,
      "new_path": "tools/perf/builtin-top.c"
    },
    {
      "type": "modify",
      "old_id": "9b38681add9e2d46e3a02b8ca0ffe48363a3e3c5",
      "old_mode": 33188,
      "old_path": "tools/perf/util/evlist.c",
      "new_id": "feffee3f2bd81f34c04ae14d72a9b8bbe1dbef82",
      "new_mode": 33188,
      "new_path": "tools/perf/util/evlist.c"
    },
    {
      "type": "modify",
      "old_id": "528c1acd9298443ce37afee8a2f3be515f49adfe",
      "old_mode": 33188,
      "old_path": "tools/perf/util/evlist.h",
      "new_id": "a19ccd7b51fa57f721dbf52fd4f32db9071db813",
      "new_mode": 33188,
      "new_path": "tools/perf/util/evlist.h"
    },
    {
      "type": "modify",
      "old_id": "9c54e8fc2dfceecd2f27a34e0b1204322d0c901d",
      "old_mode": 33188,
      "old_path": "tools/perf/util/evsel.c",
      "new_id": "f5b68e73d75174ca7ab40165266b5dedf7ab18b2",
      "new_mode": 33188,
      "new_path": "tools/perf/util/evsel.c"
    },
    {
      "type": "modify",
      "old_id": "6a258c90e7ce2fc3347b0f3a12cadc82d0f8bd0e",
      "old_mode": 33188,
      "old_path": "tools/perf/util/evsel.h",
      "new_id": "c411b421c888d5d1480f03c135e2bfee64c41281",
      "new_mode": 33188,
      "new_path": "tools/perf/util/evsel.h"
    },
    {
      "type": "modify",
      "old_id": "4364575ce6acbf33c4509cc33e78783a5969192f",
      "old_mode": 33188,
      "old_path": "tools/perf/util/parse-events.c",
      "new_id": "f6453cd414ae36ebe4c61b91381fb377edda2fd2",
      "new_mode": 33188,
      "new_path": "tools/perf/util/parse-events.c"
    },
    {
      "type": "modify",
      "old_id": "75a6800082a1d358ad2d0186cfdbe44609f9f8cc",
      "old_mode": 33188,
      "old_path": "tools/perf/util/parse-events.h",
      "new_id": "e1a184c9e35884e85021c9846530c5bce9a9f02e",
      "new_mode": 33188,
      "new_path": "tools/perf/util/parse-events.h"
    },
    {
      "type": "modify",
      "old_id": "0688bfb6d280a3b8ae3b8c0e3a474f51b9a404c2",
      "old_mode": 33188,
      "old_path": "tools/perf/util/python.c",
      "new_id": "f5bba4b8eb9e8384a5c92084d29c09c22fb0b4e7",
      "new_mode": 33188,
      "new_path": "tools/perf/util/python.c"
    }
  ]
}
