<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/tools/perf/util/callchain.c, branch linux-3.6.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.6.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.6.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-05-31T13:47:12Z</updated>
<entry>
<title>perf callchain: Make callchain cursors TLS</title>
<updated>2012-05-31T13:47:12Z</updated>
<author>
<name>Namhyung Kim</name>
</author>
<published>2012-05-31T05:43:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=472606458f3e1ced5fe3cc5f04e90a6b5a4732cf'/>
<id>urn:sha1:472606458f3e1ced5fe3cc5f04e90a6b5a4732cf</id>
<content type='text'>
perf top -G has a race on callchain cursor between main thread and
display thread. Since the callchain cursors are used locally make them
thread-local data would solve the problem.

Signed-off-by: Namhyung Kim &lt;namhyung.kim@lge.com&gt;
Reported-by: Sunjin Yang &lt;fan4326@gmail.com&gt;
Suggested-by: Arnaldo Carvalho de Melo &lt;acme@ghostprotocols.net&gt;
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;
Cc: Namhyung Kim &lt;namhyung@gmail.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Sunjin Yang &lt;fan4326@gmail.com&gt;
Link: http://lkml.kernel.org/r/1338443007-24857-1-git-send-email-namhyung.kim@lge.com
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf tools: Kill event_t typedef, use 'union perf_event' instead</title>
<updated>2011-01-29T18:25:37Z</updated>
<author>
<name>Arnaldo Carvalho de Melo</name>
</author>
<published>2011-01-29T16:01:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8115d60c323dd9931b95221c0a392aeddc1d6ef3'/>
<id>urn:sha1:8115d60c323dd9931b95221c0a392aeddc1d6ef3</id>
<content type='text'>
And move the event_t methods to the perf_event__ too.

No code changes, just namespace consistency.

Cc: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Mike Galbraith &lt;efault@gmx.de&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Stephane Eranian &lt;eranian@google.com&gt;
Cc: Tom Zanussi &lt;tzanussi@gmail.com&gt;
LKML-Reference: &lt;new-submission&gt;
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf callchain: Don't give arbitrary gender to callchain tree nodes</title>
<updated>2011-01-22T21:56:31Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2011-01-14T03:52:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=529363b76929beb85b81439c61063130af046a21'/>
<id>urn:sha1:529363b76929beb85b81439c61063130af046a21</id>
<content type='text'>
Some little callchain tree nodes shyly asked me if they can have
sisters.

How cute!

Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
LKML-Reference: &lt;1294977121-5700-5-git-send-email-fweisbec@gmail.com&gt;
Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf callchain: Rename register_callchain_param into callchain_register_param</title>
<updated>2011-01-22T21:56:31Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2011-01-14T03:52:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=16537f1355017a285b904bfb6bf767464293e69c'/>
<id>urn:sha1:16537f1355017a285b904bfb6bf767464293e69c</id>
<content type='text'>
To make the callchain API naming more consistent.

Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
LKML-Reference: &lt;1294977121-5700-4-git-send-email-fweisbec@gmail.com&gt;
Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf callchain: Rename cumul_hits into callchain_cumul_hits</title>
<updated>2011-01-22T21:56:31Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2011-01-14T03:51:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f08c3154ac439c4b5762a40107d84e839e08fbc5'/>
<id>urn:sha1:f08c3154ac439c4b5762a40107d84e839e08fbc5</id>
<content type='text'>
That makes the callchain API naming more consistent and
reduce potential naming clashes.

Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
LKML-Reference: &lt;1294977121-5700-3-git-send-email-fweisbec@gmail.com&gt;
Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf callchain: Feed callchains into a cursor</title>
<updated>2011-01-22T21:56:31Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2011-01-14T03:51:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1b3a0e9592ebf174af934b3908a2bf6a6fa86169'/>
<id>urn:sha1:1b3a0e9592ebf174af934b3908a2bf6a6fa86169</id>
<content type='text'>
The callchains are fed with an array of a fixed size.
As a result we iterate over each callchains three times:

- 1st to resolve symbols
- 2nd to filter out context boundaries
- 3rd for the insertion into the tree

This also involves some pairs of memory allocation/deallocation
everytime we insert a callchain, for the filtered out array of
addresses and for the array of symbols that comes along.

Instead, feed the callchains through a linked list with persistent
allocations. It brings several pros like:

- Merge the 1st and 2nd iterations in one. That was possible before
but in a way that would involve allocating an array slightly taller
than necessary because we don't know in advance the number of context
boundaries to filter out.

- Much lesser allocations/deallocations. The linked list keeps
persistent empty entries for the next usages and is extendable at
will.

- Makes it easier for multiple sources of callchains to feed a
stacktrace together. This is deemed to pave the way for cfi based
callchains wherein traditional frame pointer based kernel
stacktraces will precede cfi based user ones, producing an overall
callchain which size is hardly predictable. This requirement
makes the static array obsolete and makes a linked list based
iterator a much more flexible fit.

Basic testing on a big perf file containing callchains (~ 176 MB)
has shown a throughput gain of about 11% with perf report.

Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
LKML-Reference: &lt;1294977121-5700-2-git-send-email-fweisbec@gmail.com&gt;
Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
</content>
</entry>
<entry>
<title>perf: Support for callchains merge</title>
<updated>2010-08-22T19:10:35Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2010-08-22T19:10:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=612d4fd7d0c4a866a531099d4cdd0424c1058321'/>
<id>urn:sha1:612d4fd7d0c4a866a531099d4cdd0424c1058321</id>
<content type='text'>
If we sort the histograms by comm, which is the default,
we need to merge some of them, typically different thread
histograms of a same process, or just same comm. But during
this merge, we forgot to merge callchains.

So imagine we have three threads (tids: 1000, 1001, 1002) that
belong to comm "foo".

tid 1000 got 100 events
tid 1001 got 10 events
tid 1002 got 3 events

Once we merge these histograms to get a per comm result, we'll
finally get:

"foo" got 113 events

The problem is if we merge 1000 and 1001 histograms into 1002, then
the end merge result, wrt callchains, will be only callchains that
belong to 1002.
This is because we haven't handled callchains in the merge. Only those
from one of the threads inside a common comm survive.

It means during this merge, we can lose a lot of callchains.

Fix this by implementing callchains merge and apply it on histograms
that collapse.

Reported-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
</content>
</entry>
<entry>
<title>perf: Rename append_callchain into callchain_append</title>
<updated>2010-08-22T18:43:51Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2010-08-22T18:18:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6cb8e56161c4103af9178ea45ba61ddbde02969a'/>
<id>urn:sha1:6cb8e56161c4103af9178ea45ba61ddbde02969a</id>
<content type='text'>
Do that to start a consistant callchain API namespace.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>perf: Keep track of the max depth of a callchain</title>
<updated>2010-08-22T18:43:17Z</updated>
<author>
<name>Frederic Weisbecker</name>
</author>
<published>2010-08-22T18:05:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2009c5130b627d3efccae8ed36cd43450c8486d'/>
<id>urn:sha1:d2009c5130b627d3efccae8ed36cd43450c8486d</id>
<content type='text'>
In order to implement callchains collapsing, we need to keep
track of the maximum depth in a histogram tree of callchains.
This way we'll avoid allocating an arbitrary temporary buffer
size on callchain merge time.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'linus' into perf/core</title>
<updated>2010-07-21T19:43:06Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2010-07-21T19:43:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9dcdbf7a33d9018ac5d45debcf261be648bdd56a'/>
<id>urn:sha1:9dcdbf7a33d9018ac5d45debcf261be648bdd56a</id>
<content type='text'>
Merge reason: Pick up the latest perf fixes.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
</feed>
