Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755155AbbKRIDe (ORCPT ); Wed, 18 Nov 2015 03:03:34 -0500 Received: from szxga02-in.huawei.com ([119.145.14.65]:49728 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753022AbbKRIDd (ORCPT ); Wed, 18 Nov 2015 03:03:33 -0500 Message-ID: <564C2FD4.3070101@huawei.com> Date: Wed, 18 Nov 2015 15:59:16 +0800 From: "Wangnan (F)" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Jiri Olsa CC: Jiri Olsa , Arnaldo Carvalho de Melo , lkml , David Ahern , "Peter Zijlstra" , Ingo Molnar , Namhyung Kim , Milian Wolff Subject: Re: [PATCH 2/3] perf tools: Add callchain order support for libunwind DWARF unwinder 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> In-Reply-To: <20151118075431.GB5416@krava.brq.redhat.com> 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: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2526 Lines: 92 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 >> 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 #include #include 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/