Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1120201pxf; Fri, 12 Mar 2021 02:21:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwu4QpjyFtlOO8mOrbdZP3TFordLAwMSqD3YLxjvJnspwDbbw98zSjl5tZCpbb0Hynv+1iM X-Received: by 2002:aa7:d4cb:: with SMTP id t11mr13114704edr.202.1615544512279; Fri, 12 Mar 2021 02:21:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615544512; cv=none; d=google.com; s=arc-20160816; b=yMZeuGPDhm2dSe/xuhnt0HD1Z3VTPQypRUgDj792uEZp9dbJz42hu/oRBph91Le5SR 8f6ykUtHR8IyfW5chKa+zv0PflMWgRONIXyCaNn8Xq2wtaPA9N8nhQrmpkygowFNgsic 8uy9jXcpHQkSclXZJg+T8pR7M0pxyVE0/aD/HqC8JMyFCbW74NeXxpU330QD0/MSJUK+ MKWYrzjDbQvWyW/D9JrYBUIYaE/lcS5HgQ9RL6KUgIDE8nbbNqJrmUV+EMgyCq0ssi5s phVzj7+uZR9WxQAJEUh89qonQC3rvVxx9+2P1ZF1eYC0RaQv+XS7hXZRE8MDCLUatcwF rRPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=MWwNgP3+I5+GRdPRPmggTtluaQ4KEqx3204p/y28yuQ=; b=zg0q2bv1qUHGJxmmrXNyRK3I1+xTxXyO8jcKmHZxk81gQNd/zABcUz6wohy220hZhH 57rrPEsmsXQHJe3/nTqfhIIVdf1pxCfc6jYNnnOYXooWK9KRDU2B6LXCszacDFgtcjjB osaF20aefsFayNn9kfYjdlblFbLNNlAaC2XymrI+2L5wMAUQYx8/UVI+dnGxN9WmhNRl 2KKrHelj1prQcj6WuKK4AaIvmge9l4PIfa8gn8+PDSDu/NS0KFpNC7Zgtc18SyWMJazg eZf7UCFuUzHH+YgWI7JSqb2Svcn37SY5klvvjipAOykMQ+HYfjPHI8maolefEpWdCIIS GkVw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s19si3919064ejb.327.2021.03.12.02.21.29; Fri, 12 Mar 2021 02:21:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233357AbhCLKUf (ORCPT + 99 others); Fri, 12 Mar 2021 05:20:35 -0500 Received: from szxga06-in.huawei.com ([45.249.212.32]:13912 "EHLO szxga06-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233115AbhCLKUT (ORCPT ); Fri, 12 Mar 2021 05:20:19 -0500 Received: from DGGEMS412-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4Dxhc34xlVzjVY0; Fri, 12 Mar 2021 18:18:43 +0800 (CST) Received: from [10.67.102.248] (10.67.102.248) by DGGEMS412-HUB.china.huawei.com (10.3.19.212) with Microsoft SMTP Server id 14.3.498.0; Fri, 12 Mar 2021 18:20:03 +0800 Subject: Re: [PATCH] perf annotate: Fix sample events lost in stdio mode To: Namhyung Kim CC: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Yao Jin , , , linux-kernel , References: <20210306082859.179541-1-yangjihong1@huawei.com> <53ff575f-1fcf-6650-76ad-a0304f6bdf15@huawei.com> <02146240-e532-1c52-0589-bfff3fbe5166@huawei.com> From: Yang Jihong Message-ID: <360667d9-f0cc-866c-b0b9-b37dd85a9c45@huawei.com> Date: Fri, 12 Mar 2021 18:20:03 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.67.102.248] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On 2021/3/12 16:39, Namhyung Kim wrote: > On Fri, Mar 12, 2021 at 4:19 PM Yang Jihong wrote: >> >> >> Hello, >> On 2021/3/12 13:49, Namhyung Kim wrote: >>> Hi, >>> >>> On Fri, Mar 12, 2021 at 12:24 PM Yang Jihong wrote: >>>> >>>> Hello, Namhyung >>>> >>>> On 2021/3/11 22:42, Namhyung Kim wrote: >>>>> Hi, >>>>> >>>>> On Thu, Mar 11, 2021 at 5:48 PM Yang Jihong wrote: >>>>>> >>>>>> Hello, >>>>>> >>>>>> On 2021/3/6 16:28, Yang Jihong wrote: >>>>>>> In hist__find_annotations function, since have a hist_entry per IP for the same >>>>>>> symbol, we free notes->src to signal already processed this symbol in stdio mode; >>>>>>> when annotate, entry will skipped if notes->src is NULL to avoid repeated output. >>>>> >>>>> I'm not sure it's still true that we have a hist_entry per IP. >>>>> Afaik the default sort key is comm,dso,sym which means it should have a single >>>>> hist_entry for each symbol. It seems like an old comment.. >>>>> >>>> Emm, yes, we have a hist_entry for per IP. >>>> a member named "sym" in struct "hist_entry" points to symbol, >>>> different IP may point to the same symbol. >>> >>> Are you sure about this? It seems like a bug then. >>> >> Yes, now each IP corresponds to a hist_entry :) >> >> Last week I found that some sample events were missing when perf >> annotate in stdio mode, so I went through the annotate code carefully. >> >> The event handling process is as follows: >> process_sample_event >> evsel_add_sample >> hists__add_entry >> __hists__add_entry >> hists__findnew_entry >> hist_entry__new -> here allock new hist_entry > > Yeah, so this is for a symbol. > >> >> hist_entry__inc_addr_samples >> symbol__inc_addr_samples >> symbol__hists >> annotated_source__new -> here alloc annotate soruce >> annotated_source__alloc_histograms -> here alloc histograms > > This should be for each IP (ideally it should be per instruction). > >> >> By bugs, do you mean there's something wrong? > > No. I think we were saying about different things. :) > OK, :) > >>>>> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c >>>>> index a23ba6bb99b6..a91fe45bd69f 100644 >>>>> --- a/tools/perf/builtin-annotate.c >>>>> +++ b/tools/perf/builtin-annotate.c >>>>> @@ -374,13 +374,6 @@ static void hists__find_annotations(struct hists *hists, >>>>> } else { >>>>> hist_entry__tty_annotate(he, evsel, ann); >>>>> nd = rb_next(nd); >>>>> - /* >>>>> - * Since we have a hist_entry per IP for the same >>>>> - * symbol, free he->ms.sym->src to signal we already >>>>> - * processed this symbol. >>>>> - */ >>>>> - zfree(¬es->src->cycles_hist); >>>>> - zfree(¬es->src); >>>>> } >>>>> } >>>>> } >>>>> >>>> This solution may have the following problem: >>>> For example, if two sample events are in two different processes but in >>>> the same symbol, repeated output may occur. >>>> Therefore, a flag is required to indicate whether the symbol has been >>>> processed to avoid repeated output. >>> >>> Hmm.. ok. Yeah we don't care about the processes here. >>> Then we should remove it from the sort key like below: >>> >>> @@ -624,6 +617,7 @@ int cmd_annotate(int argc, const char **argv) >>> if (setup_sorting(annotate.session->evlist) < 0) >>> usage_with_options(annotate_usage, options); >>> } else { >>> + sort_order = "dso,symbol"; >>> if (setup_sorting(NULL) < 0) >>> usage_with_options(annotate_usage, options); >>> } >>> >>> >> Are you referring to this solution? >> --- a/tools/perf/builtin-annotate.c >> +++ b/tools/perf/builtin-annotate.c >> @@ -374,13 +374,6 @@ static void hists__find_annotations(struct hists >> *hists, >> } else { >> hist_entry__tty_annotate(he, evsel, ann); >> nd = rb_next(nd); >> - /* >> - * Since we have a hist_entry per IP for the same >> - * symbol, free he->ms.sym->src to signal we already >> - * processed this symbol. >> - */ >> - zfree(¬es->src->cycles_hist); >> - zfree(¬es->src); >> } >> } >> } >> @@ -624,6 +617,7 @@ int cmd_annotate(int argc, const char **argv) >> if (setup_sorting(annotate.session->evlist) < 0) >> usage_with_options(annotate_usage, options); >> } else { >> + sort_order = "dso,symbol"; >> if (setup_sorting(NULL) < 0) >> usage_with_options(annotate_usage, options); >> } >> It seems to be a better solution without adding new member. >> I just tested it and it works. >> >> If we decide to use this solution, I'll resubmit a v3 patch. > > I prefer changing the sort order (and removing the zfree and comments). > OK, I'll submit a v3 patch based on the "changing the sort order" solution. Thanks, Yang > Thanks, > Namhyung > . >