Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2733204pxv; Mon, 12 Jul 2021 00:10:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJziC60Xvk9YlBojEtGBD7Ua3COPRBjk7ylgRP6lgj8aqAwp/alwqKicqHDpaJRH+Z7akIiz X-Received: by 2002:a92:ac06:: with SMTP id r6mr35469084ilh.74.1626073858344; Mon, 12 Jul 2021 00:10:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626073858; cv=none; d=google.com; s=arc-20160816; b=CkhOHkDWbu8AwUBzFUrJnf/Km9oeGE8/JePppTqyLBHo0n+0Jqjj3N9CfJBaVkTL3D 4X2zlv4M4xvIxdKWcTtTy3OrLOlchT2nF5l745fU/I7ahldtWI5sE3d4a8m3uwYOlnBR 2hnGC/8v9bAhXXrWyidGy1E2b7JEyqBoX9g6Xz6k4Xtx5KrCFynwJlRgJq8aYiWZU4iu oYTdHU5Q/lR9dZ0iw425VCknkp4HSGKvbvdIqGudzN8B1Lj9AO4RapO4YaD+DsQjq3rx fvlSSQtKse49oxazdbCrIoqhEezOSM4//3y9Kagkw0Ljf062di1Ky9EB5UGgYXNpcQvO pLkw== 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; bh=KyIFL8r4D3mnJEILoPgUtmOSOMNZxMj3CK3PY3KLkak=; b=d7n50m09zRQjubnHN6q59Ngc8CglZADoovKyhDqQkD9JnG7jvK/S7nnpBrb/OipdeH 3HZrnPnYXtiRiDaoPwVXWB8+Ysuus8BCJVFHf5G4OUaPgSLfMMSqSI+Ufhth3QkuGkJh UBPETXWHHG02Kvtjl/j6ENp/T01LqoudAJO+vwDdoKBG3JOUMA70c3QJ4bYEqB8WtLt1 pd2GO6OvUC9y+jLDOG0MDvKq+Cu6c1xzDPEbOOQoZxmB9EH634KiyK+eOSCZQLgF8REW +exOnDmwHEHueHgyrHW8lbEc0jfyw4ZOEDEMbVcmotq8JG4E3IrcNgptCSmmmep6hKQZ qgUg== 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 l10si16659242jak.11.2021.07.12.00.10.45; Mon, 12 Jul 2021 00:10:58 -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 S242212AbhGLHLt (ORCPT + 99 others); Mon, 12 Jul 2021 03:11:49 -0400 Received: from mga18.intel.com ([134.134.136.126]:45893 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239360AbhGLGtl (ORCPT ); Mon, 12 Jul 2021 02:49:41 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10042"; a="197204419" X-IronPort-AV: E=Sophos;i="5.84,232,1620716400"; d="scan'208";a="197204419" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jul 2021 23:46:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,232,1620716400"; d="scan'208";a="491916173" Received: from nntpat99-84.inn.intel.com ([10.125.99.84]) by FMSMGA003.fm.intel.com with ESMTP; 11 Jul 2021 23:46: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 v10 08/24] perf record: Introduce data file at mmap buffer object Date: Mon, 12 Jul 2021 09:46:08 +0300 Message-Id: <9f112977fb46418f6275fef45612c662d03db66d.1626072009.git.alexey.v.bayduraev@linux.intel.com> 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 Acked-by: Namhyung Kim 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 cb8d320d20a9..d67a09e26792 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -197,6 +197,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