From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DCEBC43381 for ; Wed, 13 Mar 2019 14:37:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6C14D2087C for ; Wed, 13 Mar 2019 14:37:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727002AbfCMOha (ORCPT ); Wed, 13 Mar 2019 10:37:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47480 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725889AbfCMOh3 (ORCPT ); Wed, 13 Mar 2019 10:37:29 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DD21B7E436; Wed, 13 Mar 2019 14:37:28 +0000 (UTC) Received: from krava (unknown [10.43.17.124]) by smtp.corp.redhat.com (Postfix) with SMTP id 3582D619CC; Wed, 13 Mar 2019 14:37:27 +0000 (UTC) Date: Wed, 13 Mar 2019 15:37:26 +0100 From: Jiri Olsa To: Alexey Budankov Cc: Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Ingo Molnar , Andi Kleen , linux-kernel Subject: Re: [PATCH v4 0/10] perf: enable compression of record mode trace to save storage space Message-ID: <20190313143726.GG6676@krava> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Wed, 13 Mar 2019 14:37:29 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 28, 2019 at 11:35:24AM +0300, Alexey Budankov wrote: > > The patch set implements runtime trace compression (-z option) in > record mode and trace auto decompression in report and inject modes. > Streaming Zstandard (Zstd) API (zstd) is used for compression and > decompression of data that come from kernel mmaped data buffers. > > Usage of implemented -z,--compression_level=n option provides ~3-5x > avg. trace file size reduction on variety of tested workloads what > saves storage space on larger server systems where trace file size > can easily reach several tens or even hundreds of GiBs, especially > when profiling with dwarf-based stacks and tracing of context switches. > Implemented -f,--mmap-flush option can be used to avoid compressing > every single byte of data and increase compression ratio at the same > time lowering tool runtime overhead. Default option value is 1 what > is equal to the current perf record implementation. The option is > independent from -z setting and doesn't vary with compression level: > > $ tools/perf/perf record -z 1 -e cycles -- matrix.gcc > $ tools/perf/perf record --aio=1 -z 1 -e cycles -- matrix.gcc > $ tools/perf/perf record -z 1 -f 1024 -e cycles -- matrix.gcc > $ tools/perf/perf record --aio=1 -z 1 -f 1024 -e cycles -- matrix.gcc > > Runtime compression overhead has been measured for serial and AIO > trace writing modes when profiling matrix multiplication workload > with the following results: > > ------------------------------------------------------------- > | 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 file x ratio > > See complete description of measurement conditions with details below. > > Introduced compression functionality can be disabled or configured from > the command line using NO_LIBZSTD and LIBZSTD_DIR defines: > > $ make -C tools/perf NO_LIBZSTD=1 clean all > $ make -C tools/perf LIBZSTD_DIR=/path/to/zstd/sources/ clean all > > If your system has some version of the zstd package preinstalled then > the build system finds and uses it during the build. Auto detection > feature status is reported just before compilation starts, as usual. > If you still prefer to compile with some version of zstd that is not > preinstalled you have capability to refer the compilation to that > version using LIBZSTD_DIR define. > > See 'perf test' results below for enabled and disabled (NO_LIBZSTD=1) > feature configurations. > > --- > Alexey Budankov (10): > feature: implement libzstd check, LIBZSTD_DIR and NO_LIBZSTD defines > perf record: implement -f,--mmap-flush= option > perf session: define bytes_transferred and bytes_compressed metrics > perf record: implement COMPRESSED event record and its attributes > perf mmap: implement dedicated memory buffer for data compression > perf util: introduce Zstd based streaming compression API > perf record: implement -z,--compression_level=n option and compression > perf report: implement record trace decompression > perf inject: enable COMPRESSED records decompression > perf tests: implement Zstd comp/decomp integration test the record messages disappeared totaly: [jolsa@krava perf]$ ./perf record -z 1 ls [jolsa@krava perf]$ ./perf record -z 22 ls [jolsa@krava perf]$ ./perf record ls [jolsa@krava perf]$ seems like we bail out for some reason with no message: [jolsa@krava perf]$ ./perf record ls [jolsa@krava perf]$ ./perf report --stat WARNING: The perf.data file's data size field is 0 which is unexpected. Was the 'perf record' command properly terminated? Error: failed to process sample jirka