Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp3373682pxy; Sun, 25 Apr 2021 23:30:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwy+MHufHpgcwY03OO9bHxEGkpN+ytyreLA0YlDk30DjB+uf80E04DlB0KHDClRdfgV4+nO X-Received: by 2002:a50:9b4e:: with SMTP id a14mr19100139edj.0.1619418623744; Sun, 25 Apr 2021 23:30:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619418623; cv=none; d=google.com; s=arc-20160816; b=UVB0I14LfsXio85pP9K/U/ush7wA4PjEWwRP+d0PAvwmd42alQOu6w03ZPAkUjiFMS lG8uw0lFny3wvDtxOnKWAv/vYtx/CHqcd2moxNSXeiazKGwUgCBEl4Afvqre7BI/28nA h+1tS5z6NgeupUqdJ5EjofOzKfKyDm7AcSZ5xxOnucu8CBHD1+jJC9tQg7DtS46LgDOf /E4CqT1niWddd9tZkAUmsoYIc1EiGJnZsduv183xgOEHs0fjKv/IlSsMaum8XxfERG0h tg4jUnF9qi9IkHzIeNpmhs3IAkAQRkhHCsV+pzUK26P1M8UJ10TBh52AXRgTyrIpYOh3 TZTg== 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:organization :from:references:cc:to:subject:ironport-sdr:ironport-sdr; bh=Fn+xeEdtKgDVC1jCbMoLRx4+FUpj1A7Fo5pTN5+aypw=; b=MBZRFAbSwJyilz6XmArZIqEPTZy/NBNGhOtUKE5Z2JP/px2pu4xfm0MaHwXg8wJa9k kET/YlyqCWAHWzjl2R1f+e0HFXnjWiXjvUjz5pjHu4eHPZtdE2kfvAFZ6D0XjealylzH bvK/tHKpIydBfU8nimgSk0tReCymFrZNQvgoq0jWdVh5FOiM7vAi68RsmQfiKo0NvZcx Dcks2Krjm8DpOyocHbIw8VHbyB4/W6cdQHiHjmgBECdD/FMHzg1YP0MQQNNG2srUB6wQ QZEVH08ymj34Adxvvbi8uELJsuBj/vkiLFIhvci/23B7bgYc7EZZ0c75SoK3A3Ee8QXu +ovA== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id sb9si14403659ejb.545.2021.04.25.23.29.56; Sun, 25 Apr 2021 23:30:23 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232014AbhDZG3N (ORCPT + 99 others); Mon, 26 Apr 2021 02:29:13 -0400 Received: from mga12.intel.com ([192.55.52.136]:54096 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232000AbhDZG3M (ORCPT ); Mon, 26 Apr 2021 02:29:12 -0400 IronPort-SDR: DcMqNP/kmOBWa8CcNdanRCrwnf4qWGXRcl599BAnuh48fFyq+7Rv6jO1rHE8UfLfXrqpvtl/WL Yb+Vsa9GhPpQ== X-IronPort-AV: E=McAfee;i="6200,9189,9965"; a="175771352" X-IronPort-AV: E=Sophos;i="5.82,251,1613462400"; d="scan'208";a="175771352" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Apr 2021 23:28:31 -0700 IronPort-SDR: Ng+kW7tet/vADR6IO1L4MI5VmMoTl6brB4SBD0+9Ys/iwnsUG0Ah/QmZW2+Q19/802KKdgzILu iZo928L4pPAg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,251,1613462400"; d="scan'208";a="422524728" Received: from ahunter-desktop.fi.intel.com (HELO [10.237.72.174]) ([10.237.72.174]) by fmsmga008.fm.intel.com with ESMTP; 25 Apr 2021 23:28:29 -0700 Subject: Re: [PATCH v1 2/2] perf intel-pt: Use aux_watermark To: Alexander Shishkin , Peter Zijlstra , Arnaldo Carvalho de Melo Cc: Ingo Molnar , linux-kernel@vger.kernel.org, Jiri Olsa , Mathieu Poirier References: <20210414154955.49603-1-alexander.shishkin@linux.intel.com> <20210414154955.49603-3-alexander.shishkin@linux.intel.com> From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Message-ID: <0b8b1232-56ad-d91f-6637-4c70f82732d0@intel.com> Date: Mon, 26 Apr 2021 09:28:42 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210414154955.49603-3-alexander.shishkin@linux.intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 14/04/21 6:49 pm, Alexander Shishkin wrote: > Turns out, the default setting of attr.aux_watermark to half of the total > buffer size is not very useful, especially with smaller buffers. The > problem is that, after half of the buffer is filled up, the kernel updates > ->aux_head and sets up the next "transaction", while observing that > ->aux_tail is still zero (as userspace haven't had the chance to update > it), meaning that the trace will have to stop at the end of this second > "transaction". This means, for example, that the second PERF_RECORD_AUX in > every trace comes with TRUNCATED flag set. > > Setting attr.aux_watermark to quarter of the buffer gives enough space for > the ->aux_tail update to be observed and prevents the data loss. > > The obligatory before/after showcase: > >> # perf_before record -e intel_pt//u -m,8 uname >> Linux >> [ perf record: Woken up 6 times to write data ] >> Warning: >> AUX data lost 4 times out of 10! >> >> [ perf record: Captured and wrote 0.099 MB perf.data ] >> # perf record -e intel_pt//u -m,8 uname >> Linux >> [ perf record: Woken up 4 times to write data ] >> [ perf record: Captured and wrote 0.039 MB perf.data ] > > The effect is still visible with large workloads and large buffers, > although less pronounced. > > Signed-off-by: Alexander Shishkin Acked-by: Adrian Hunter > --- > tools/perf/arch/x86/util/intel-pt.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c > index a6420c647959..6df0dc00d73a 100644 > --- a/tools/perf/arch/x86/util/intel-pt.c > +++ b/tools/perf/arch/x86/util/intel-pt.c > @@ -776,6 +776,12 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, > } > } > > + if (!opts->auxtrace_snapshot_mode && !opts->auxtrace_sample_mode) { > + u32 aux_watermark = opts->auxtrace_mmap_pages * page_size / 4; > + > + intel_pt_evsel->core.attr.aux_watermark = aux_watermark; > + } > + > intel_pt_parse_terms(intel_pt_pmu->name, &intel_pt_pmu->format, > "tsc", &tsc_bit); > >