Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1271904

Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind DWARF unwinder

Path csiph.com!eternal-september.org!feeder.eternal-september.org!feeds.phibee-telecom.net!news.panservice.it!bofh.it!news.nic.it!robomod
From "Wangnan (F)" <wangnan0@huawei.com>
Newsgroups linux.kernel
Subject Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind DWARF unwinder
Date Wed, 18 Nov 2015 09:10:02 +0100
Message-ID <qw5Yu-fd-9@gated-at.bofh.it> (permalink)
References <qvQ3o-6Fs-9@gated-at.bofh.it> <qvQ3o-6Fs-7@gated-at.bofh.it> <qw2nU-6d6-13@gated-at.bofh.it> <qw5OO-8o2-11@gated-at.bofh.it>
X-Original-To Jiri Olsa <jolsa@redhat.com>
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0
MIME-Version 1.0
Content-Type text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding 7bit
X-Originating-IP [10.111.66.109]
X-Cfilter-Loop Reflected
X-Mirapoint-Virus-Rapid-Raw score=unknown(0), refid=str=0001.0A090203.564C30CB.0070,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32
X-Mirapoint-Loop-ID 5108a053352c28b01c2f0c177b4b4355
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 92
Organization linux.* mail to news gateway
X-Original-Cc Jiri Olsa <jolsa@kernel.org>, Arnaldo Carvalho de Melo <acme@kernel.org>, lkml <linux-kernel@vger.kernel.org>, David Ahern <dsahern@gmail.com>, "Peter Zijlstra" <peterz@infradead.org>, Ingo Molnar <mingo@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Milian Wolff <milian.wolff@kdab.com>
X-Original-Date Wed, 18 Nov 2015 15:59:16 +0800
X-Original-Message-ID <564C2FD4.3070101@huawei.com>
X-Original-References <1447772739-18471-1-git-send-email-jolsa@kernel.org> <1447772739-18471-3-git-send-email-jolsa@kernel.org> <564BFAD4.8060909@huawei.com> <20151118075431.GB5416@krava.brq.redhat.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1271904

Show key headers only | View raw



On 2015/11/18 15:54, Jiri Olsa wrote:
> On Wed, Nov 18, 2015 at 12:13:08PM +0800, Wangnan (F) wrote:
>
> SNIP
>
>>       3.38%  a.out    a.out             [.] funcc
>>                |
>>                ---funcc
>>                   |
>>                   |--2.70%-- funcb
>>                   |          funca
>>                   |          main
>>                   |          __libc_start_main
>>                   |          _start
>>                   |
>>                    --0.68%-- 0
>>
>>
>> I'm not sure whether we can regard this behavior changing as a bugfix? I
>> think
>> there may be some reason the original code explicitly avoid creating an '0'
>> entry.
>>
>> Then I tried to find why perf can't get call frame on my case, and
>> I guess there's something wrong whe dealing with 'call' command, because
>> the instruction on it I can't get callchain from libunwind is a 'callq':
>>
>>    ...
>>    4005bf:       be 00 00 00 00          mov    $0x0,%esi
>>    4005c4:       48 89 c7                mov    %rax,%rdi
>>    4005c7:       e8 74 fe ff ff          callq  400440 <gettimeofday@plt>
>>                  us2 = tv2.tv_sec * 1000000 + tv2.tv_usec;
>>    4005cc:       48 8b 04 24             mov    (%rsp),%rax
>>    ...
>>
>> But this is another problem, we can discuss it in a new thread.
> so the problem is you dont see the gettimeofday call at the end?

No. The problem is when sample is taken at 'callq' perf is unable to
unwind correctly, even with dwarf and user stack.

> could you share the test code?


I have posted a detail analysis in [1] (rechecked, you are in cc-list).
Test code is here:

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>

static volatile int x = 0;

int funcc(void)
{
     struct timeval tv1, tv2;
     unsigned long us1, us2;

     gettimeofday(&tv1, NULL);

     us1 = tv1.tv_sec * 1000000 + tv1.tv_usec;

     while(1) {
         x = x + 100;
         gettimeofday(&tv2, NULL);
         us2 = tv2.tv_sec * 1000000 + tv2.tv_usec;
         if (us2 - us1 >= 3000000)
             break;
     }
     return x;
}
int funcb(void) { return funcc();}
int funca(void) { return funcb();}
int main() { funca(); return 0;}

Thank you.

[1] http://lkml.kernel.org/r/564C26C4.2040603@huawei.com


>
> thanks,
> jirka


--
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/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 2/3] perf tools: Add callchain order support for libunwind DWARF unwinder Jiri Olsa <jolsa@kernel.org> - 2015-11-17 16:10 +0100
  Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind  DWARF unwinder "Wangnan (F)" <wangnan0@huawei.com> - 2015-11-18 05:20 +0100
    Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Namhyung Kim <namhyung@kernel.org> - 2015-11-18 06:50 +0100
      Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind  DWARF unwinder "Wangnan (F)" <wangnan0@huawei.com> - 2015-11-18 08:40 +0100
        Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Namhyung Kim <namhyung@kernel.org> - 2015-11-22 16:30 +0100
      Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Jiri Olsa <jolsa@redhat.com> - 2015-11-18 09:30 +0100
      Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Jiri Olsa <jolsa@redhat.com> - 2015-11-18 09:30 +0100
        Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind DWARF unwinder Namhyung Kim <namhyung@gmail.com> - 2015-11-18 10:30 +0100
    Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Jiri Olsa <jolsa@redhat.com> - 2015-11-18 09:00 +0100
      Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind  DWARF unwinder "Wangnan (F)" <wangnan0@huawei.com> - 2015-11-18 09:10 +0100
      Re: [PATCH 2/3] perf tools: Add callchain order support for  libunwind DWARF unwinder Jiri Olsa <jolsa@redhat.com> - 2015-11-18 09:20 +0100
    [PATCHv2 2/3] perf tools: Add callchain order support for libunwind  DWARF unwinder Jiri Olsa <jolsa@redhat.com> - 2015-11-18 09:00 +0100
      Re: [PATCHv2 2/3] perf tools: Add callchain order support for libunwind  DWARF unwinder "Wangnan (F)" <wangnan0@huawei.com> - 2015-11-18 10:50 +0100
      [tip:perf/core] perf callchain:   Add order support for libunwind DWARF unwinder tip-bot for Jiri Olsa <tipbot@zytor.com> - 2015-11-26 09:20 +0100

csiph-web