lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 8 Mar 2012 10:22:26 -0800
From:	Arun Sharma <asharma@...com>
To:	Frederic Weisbecker <fweisbec@...il.com>
Cc:	Arun Sharma <asharma@...com>, linux-kernel@...r.kernel.org,
	Ingo Molnar <mingo@...e.hu>,
	Arnaldo Carvalho de Melo <acme@...hat.com>,
	Mike Galbraith <efault@....de>,
	Paul Mackerras <paulus@...ba.org>,
	Peter Zijlstra <peterz@...radead.org>,
	Stephane Eranian <eranian@...gle.com>,
	Namhyung Kim <namhyung.kim@....com>,
	Tom Zanussi <tzanussi@...il.com>,
	linux-perf-users@...r.kernel.org
Subject: Re: [PATCH 2/2] perf: Add a new sort order: SORT_INCLUSIVE

On Thu, Mar 08, 2012 at 04:39:36PM +0100, Frederic Weisbecker wrote:
> 
> I don't yet understand the point of this.
> 
> Imagine those three hists:
> 
> a -> b -> c
> a -> b -> d
> a-> e -> f
> 
> The fractal inverted mode (-G) will report this:
> 
> a--
>   |
>   ----- b
>   |     |
>   |     -----c
>   |     |
>   |     -----d
>   |
>   ----- e
>         |
>         -----f
> 

Please see the test program attached. It has only two paths from main()
to c(). But for this discussion, imagine a callgraph with 10 different
paths.

With -G, c() appears 10 times in the callgraph and the user is required
to manually sum up the samples to realize that the callgraph under c()
is very expensive.

With -s inclusive, c() will show up at the very top after main().

 -Arun

#include <stdio.h>

int sum = 0;

#define LOOP(n)                                         \
        {                                               \
                int j;                                  \
                for (j = 0; j < 10000; j++) {           \
                        sum += j;                       \
                }                                       \
        }

int f()
{
        LOOP(100);
}

int d()
{
        LOOP(100);
        f();
}

int e()
{
	LOOP(100);
	f();
}

int c()
{
	LOOP(100);
	d();
	LOOP(100);
	e();
}

int b() 
{
	LOOP(70);
	c();
}

int a() 
{
	LOOP(30);
	c();
}

int main()
{
	int i;
	for (i = 0; i < 10000; i++) {
		a();
		b();
	}
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ