mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Alexey Budankov <alexey.budankov@linux.intel.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andi Kleen <ak@linux.intel.com>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH v7 09/12] perf record: implement -z,--compression_level=n option
Date: Tue, 12 Mar 2019 08:32:52 +0300	[thread overview]
Message-ID: <1e360280-fdd3-0555-0daf-d711d4d0941f@linux.intel.com> (raw)
In-Reply-To: <5f3a8326-58a0-816e-ad61-31c111232c7a@linux.intel.com>


Implemented -z,--compression_level=n option that enables compression
of mmaped kernel data buffers content in runtime during perf record
mode collection.

Compression overhead has been measured for serial and AIO streaming
when profiling matrix multiplication workload:

    -------------------------------------------------------------
    | SERIAL			  | AIO-1                       |
----------------------------------------------------------------|
|-z | OVH(x) | ratio(x) size(MiB) | OVH(x) | ratio(x) size(MiB) |
|---------------------------------------------------------------|
| 0 | 1,00   | 1,000    179,424   | 1,00   | 1,000    187,527   |
| 1 | 1,04   | 8,427    181,148   | 1,01   | 8,474    188,562   |
| 2 | 1,07   | 8,055    186,953   | 1,03   | 7,912    191,773   |
| 3 | 1,04   | 8,283    181,908   | 1,03   | 8,220    191,078   |
| 5 | 1,09   | 8,101    187,705   | 1,05   | 7,780    190,065   |
| 8 | 1,05   | 9,217    179,191   | 1,12   | 6,111    193,024   |
-----------------------------------------------------------------

OVH = (Execution time with -z N) / (Execution time with -z 0)

ratio - compression ratio
size  - number of bytes that was compressed

	size ~= trace size x ratio

Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
---
 tools/perf/Documentation/perf-record.txt | 5 +++++
 tools/perf/builtin-record.c              | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index d1e6c1fd7387..632502b1f335 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -472,6 +472,11 @@ Also at some cases executing less trace write syscalls with bigger data size can
 shorter than executing more trace write syscalls with smaller data size thus lowering
 runtime profiling overhead.
 
+-z::
+--compression-level=n::
+Produce compressed trace using specified level n (no compression: 0 - default,
+fastest compression: 1, smallest trace: 22)
+
 --all-kernel::
 Configure all used events to run in kernel space.
 
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 47e0abe22192..9f1bba6d4331 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -346,7 +346,7 @@ static void record__aio_mmap_read_sync(struct record *rec)
 	struct perf_evlist *evlist = rec->evlist;
 	struct perf_mmap *maps = evlist->mmap;
 
-	if (!rec->opts.nr_cblocks)
+	if (!record__aio_enabled(rec))
 		return;
 
 	for (i = 0; i < evlist->nr_mmaps; i++) {
@@ -2166,6 +2166,10 @@ static struct option __record_options[] = {
 	OPT_CALLBACK(0, "affinity", &record.opts, "node|cpu",
 		     "Set affinity mask of trace reading thread to NUMA node cpu mask or cpu of processed mmap buffer",
 		     record__parse_affinity),
+#ifdef HAVE_ZSTD_SUPPORT
+	OPT_UINTEGER('z', "compression-level", &record.opts.comp_level,
+		     "Produce compressed trace using specified level (default: 0, fastest: 1, smallest: 22)"),
+#endif
 	OPT_END()
 };
 
-- 
2.20.1


  parent reply	other threads:[~2019-03-12  5:32 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-12  4:57 [PATCH v7 00/12] perf: enable compression of record mode trace to save storage space Alexey Budankov
2019-03-12  5:03 ` [PATCH v7 01/12] feature: implement libzstd check, LIBZSTD_DIR and NO_LIBZSTD defines Alexey Budankov
2019-03-12  5:12 ` [PATCH v7 02/12] perf record: implement -f,--mmap-flush=<threshold> option Alexey Budankov
2019-03-13 14:36   ` Jiri Olsa
2019-03-13 15:00     ` Alexey Budankov
2019-03-12  5:15 ` [PATCH v7 03/12] perf session: define bytes_transferred and bytes_compressed metrics Alexey Budankov
2019-03-12  5:17 ` [PATCH v7 04/12] perf record: implement COMPRESSED event record and its attributes Alexey Budankov
2019-03-12  5:20 ` [PATCH v7 05/12] perf mmap: implement dedicated memory buffer for data compression Alexey Budankov
2019-03-12  5:23 ` [PATCH v7 06/12] perf util: introduce Zstd based streaming compression API Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-13 15:06     ` Alexey Budankov
2019-03-12  5:25 ` [PATCH v7 07/12] perf record: implement compression for serial trace streaming Alexey Budankov
2019-03-12  5:30 ` [PATCH v7 08/12] perf record: implement compression for AIO " Alexey Budankov
2019-03-13 14:36   ` Jiri Olsa
2019-03-13 15:33     ` Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-12  5:32 ` Alexey Budankov [this message]
2019-03-12  5:36 ` [PATCH v7 10/12] perf report: implement record trace decompression Alexey Budankov
2019-03-13 14:37   ` Jiri Olsa
2019-03-13 15:55     ` Alexey Budankov
2019-03-14  9:01       ` Jiri Olsa
2019-03-12  5:37 ` [PATCH v7 11/12] perf inject: enable COMPRESSED records decompression Alexey Budankov
2019-03-12  5:38 ` [PATCH v7 12/12] perf tests: implement Zstd comp/decomp integration test Alexey Budankov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1e360280-fdd3-0555-0daf-d711d4d0941f@linux.intel.com \
    --to=alexey.budankov@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®