Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4509929pxj; Tue, 22 Jun 2021 01:44:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxyvuCU0uR7DPf05TFS+K6Um633sQCBD+x5c4nzzFSKG5DHO9vJLXCT4AwOmkdb54bhiZ1w X-Received: by 2002:aa7:d6d6:: with SMTP id x22mr3370354edr.224.1624351489483; Tue, 22 Jun 2021 01:44:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624351489; cv=none; d=google.com; s=arc-20160816; b=YQq3lbdR8qQqZdC8i3c+MIKJlTjtvLWv3e0LQmvzOqV4z7o1KVSSOJaG/6NDderedN ves5YICpIqB3n6S0iDtVclD29kHK3L+Mia7tORqw53nHL9dEq9CzSSrbsPP7oME1KM8t OWi0p1wY1VAwaaVMKhC2VFlrEF4db/hOzKhmOBJLexpU2/5u6oOvyEMoZrrw96CCDJ1d wfFiXwNPI4xPPPpuOxeYX/TevDsB42/dLpevYeOd+91yxbvOEHuowT/3vEjcUrXpx5tN mDswY5GfVpLXylcExCCuk8iQdFvaMtUOPFOzbAemB2BhIDo6CwCl9PtSyGMK3H5XA2VE DEAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=0YgzRZ4Ln5OrOByC1YiKyptYJboh/V9Lu0WNFhoEe8s=; b=uMGCasOdfxKeXgAI24jKYLqrspGt8GGj0XjafTpCJKlj71d2sr9/fS9nE91p02orT5 LbaBx6cpqmwLIaUFxKB/e9xkmJnNNpgQKe7RWrDzEWV3Un6VhQNkkyK+n1cgiwHyBBb5 nntLSrtVe7GmD4kBNHbQVfPrVcVaO/JaMv3E0BEX/tBdADeXIn1txXdblJlseAstrCAe BKENo0rGST7LoebLiIC9w17h8zkMlmSw3JlwrM0U11fDJ95zJhrJcD3s1cmfP/3iw0PE IZLUzYgY7r+A/1d0pBs/EFSXozBh0L0DnEEveL59X4THjvYooMQHsO9EJ3IIlOPYw3w4 Fw3g== 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 en22si346701ejc.80.2021.06.22.01.44.27; Tue, 22 Jun 2021 01:44:49 -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 S231145AbhFVIpL (ORCPT + 99 others); Tue, 22 Jun 2021 04:45:11 -0400 Received: from mga05.intel.com ([192.55.52.43]:57595 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231148AbhFVIpH (ORCPT ); Tue, 22 Jun 2021 04:45:07 -0400 IronPort-SDR: 9CJ0LUpH5Ig1ySdMRpl/cPQHThLsswPzu/ciD+nRb/1HmvxzVmjfVdH5j/7xf5YKJieuPURF+0 jFVTNQ/vSc9g== X-IronPort-AV: E=McAfee;i="6200,9189,10022"; a="292641546" X-IronPort-AV: E=Sophos;i="5.83,291,1616482800"; d="scan'208";a="292641546" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jun 2021 01:42:52 -0700 IronPort-SDR: f5BYqzl6vGfZ2vNx919zFUHdC5oJwClscrvZXG9E6aCT6RmfgT1ZfcluXHUci+Ak6TcuD7uy78 H3m4swijkuWg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,291,1616482800"; d="scan'208";a="417332517" Received: from nntpat99-84.inn.intel.com ([10.125.99.84]) by fmsmga007.fm.intel.com with ESMTP; 22 Jun 2021 01:42:49 -0700 From: Alexey Bayduraev To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Ingo Molnar , linux-kernel , Andi Kleen , Adrian Hunter , Alexander Antonov , Alexei Budankov , Riccardo Mancini Subject: [PATCH v7 06/20] perf record: Introduce data file at mmap buffer object Date: Tue, 22 Jun 2021 11:42:15 +0300 Message-Id: X-Mailer: git-send-email 2.19.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce data file and compressor objects into mmap object so they could be used to process and store data stream from the corresponding kernel data buffer. Make use of the introduced per mmap file and compressor when they are initialized and available. Acked-by: Andi Kleen Signed-off-by: Alexey Bayduraev --- tools/perf/builtin-record.c | 3 +++ tools/perf/util/mmap.c | 6 ++++++ tools/perf/util/mmap.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index b02d97507fcb..38bb5afbb359 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -190,6 +190,9 @@ static int record__write(struct record *rec, struct mmap *map __maybe_unused, { struct perf_data_file *file = &rec->session->data->file; + if (map && map->file) + file = map->file; + if (perf_data_file__write(file, bf, size) < 0) { pr_err("failed to write perf data, error: %m\n"); return -1; diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index ab7108d22428..a2c5e4237592 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -230,6 +230,8 @@ void mmap__munmap(struct mmap *map) { bitmap_free(map->affinity_mask.bits); + zstd_fini(&map->zstd_data); + perf_mmap__aio_munmap(map); if (map->data != NULL) { munmap(map->data, mmap__mmap_len(map)); @@ -291,6 +293,10 @@ int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, int cpu) map->core.flush = mp->flush; map->comp_level = mp->comp_level; + if (zstd_init(&map->zstd_data, map->comp_level)) { + pr_debug2("failed to init mmap commpressor, error %d\n", errno); + return -1; + } if (map->comp_level && !perf_mmap__aio_enabled(map)) { map->data = mmap(NULL, mmap__mmap_len(map), PROT_READ|PROT_WRITE, diff --git a/tools/perf/util/mmap.h b/tools/perf/util/mmap.h index 9d5f589f02ae..c4aed6e89549 100644 --- a/tools/perf/util/mmap.h +++ b/tools/perf/util/mmap.h @@ -13,6 +13,7 @@ #endif #include "auxtrace.h" #include "event.h" +#include "util/compress.h" struct aiocb; @@ -43,6 +44,8 @@ struct mmap { struct mmap_cpu_mask affinity_mask; void *data; int comp_level; + struct perf_data_file *file; + struct zstd_data zstd_data; }; struct mmap_params { -- 2.19.0