From: Masahiro Yamada <masahiroy@kernel.org>
To: "Piotr Górski" <lucjan.lucjanov@gmail.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
Michal Marek <michal.lkml@markovi.net>,
Nick Desaulniers <ndesaulniers@google.com>
Subject: Re: [PATCH] kbuild: use smaller dictionary size for zstd module compression
Date: Sun, 19 Sep 2021 20:36:11 +0900 [thread overview]
Message-ID: <CAK7LNATBvZBmuznFaFQgZeOO_F_UsisPYBobDC7LYDMVW3Yd=w@mail.gmail.com> (raw)
In-Reply-To: <CAL2Yj0QvoNZ3VeYfk63oMUTenP3eypJx+fB6f09rprV-fCphGw@mail.gmail.com>
On Sat, Sep 18, 2021 at 12:07 AM Piotr Górski <lucjan.lucjanov@gmail.com> wrote:
>
> Ping...
>
> pt., 10 wrz 2021 o 15:10 Piotr Gorski <lucjan.lucjanov@gmail.com> napisał(a):
> >
> > By default, zstd without parameters uses a dictionary size of 8 MB.
> > However, most modules are much smaller than that.
> > Use a dictionary size of 2 MB for module compression, resulting in
> > slightly higher compression speed while still maintaining a good
> > compression ratio.
> > The --zstd=wlog=21 option is equivalent to --lzma2=dict=2MiB used in XZ compression.
What is a benefit of this patch?
It claims "slightly higher compression", but I do not see a difference.
(15.0577 sec --> 15.013 sec)
[1] build allmodconfig
[2] collect *.ko files whose size is less than 2MB
[3] measure the time elapsed for compressing all of them
I did 'perf stat --repeat 10'.
The default zstd:
Performance counter stats for '/tmp/zstd2/test.sh' (10 runs):
19,250.23 msec task-clock # 1.278 CPUs
utilized ( +- 0.49% )
65,424 context-switches # 0.003 M/sec
( +- 0.03% )
5,609 cpu-migrations # 0.291 K/sec
( +- 0.25% )
4,207,419 page-faults # 0.219 M/sec
( +- 0.19% )
54,349,495,038 cycles # 2.823 GHz
( +- 0.15% ) (85.93%)
3,833,225,032 stalled-cycles-frontend # 7.05% frontend
cycles idle ( +- 0.47% ) (86.34%)
20,789,203,221 stalled-cycles-backend # 38.25% backend
cycles idle ( +- 0.31% ) (85.92%)
65,385,071,612 instructions # 1.20 insn per
cycle
# 0.32 stalled
cycles per insn ( +- 0.09% ) (86.54%)
11,033,842,879 branches # 573.180 M/sec
( +- 0.10% ) (86.38%)
288,314,097 branch-misses # 2.61% of all
branches ( +- 0.16% ) (86.33%)
15.0577 +- 0.0728 seconds time elapsed ( +- 0.48% )
zstd --zstd=wlog=21:
Performance counter stats for '/tmp/zstd2/test2.sh' (10 runs):
19,203.08 msec task-clock # 1.279 CPUs
utilized ( +- 0.85% )
65,404 context-switches # 0.003 M/sec
( +- 0.05% )
5,617 cpu-migrations # 0.293 K/sec
( +- 0.15% )
4,214,502 page-faults # 0.219 M/sec
( +- 0.12% )
54,495,218,169 cycles # 2.838 GHz
( +- 0.29% ) (85.55%)
3,867,166,903 stalled-cycles-frontend # 7.10% frontend
cycles idle ( +- 0.26% ) (87.22%)
20,950,577,113 stalled-cycles-backend # 38.44% backend
cycles idle ( +- 0.38% ) (86.51%)
65,500,859,667 instructions # 1.20 insn per
cycle
# 0.32 stalled
cycles per insn ( +- 0.12% ) (86.65%)
11,045,504,296 branches # 575.194 M/sec
( +- 0.12% ) (85.90%)
288,729,169 branch-misses # 2.61% of all
branches ( +- 0.12% ) (85.59%)
15.013 +- 0.129 seconds time elapsed ( +- 0.86% )
> > Signed-off-by: Piotr Gorski <lucjan.lucjanov@gmail.com>
> > ---
> > scripts/Makefile.modinst | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
> > index ff9b09e4cfca..c3475e5aca7c 100644
> > --- a/scripts/Makefile.modinst
> > +++ b/scripts/Makefile.modinst
> > @@ -97,7 +97,7 @@ quiet_cmd_gzip = GZIP $@
> > quiet_cmd_xz = XZ $@
> > cmd_xz = $(XZ) --lzma2=dict=2MiB -f $<
> > quiet_cmd_zstd = ZSTD $@
> > - cmd_zstd = $(ZSTD) -T0 --rm -f -q $<
> > + cmd_zstd = $(ZSTD) --zstd=wlog=21 -T0 --rm -f -q $<
> >
> > $(dst)/%.ko.gz: $(dst)/%.ko FORCE
> > $(call cmd,gzip)
> > --
> > 2.33.0.142.ge0a2f5cbc5
> >
--
Best Regards
Masahiro Yamada
prev parent reply other threads:[~2021-09-19 11:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-10 13:09 [PATCH] kbuild: use smaller dictionary size for zstd module compression Piotr Gorski
2021-09-17 15:07 ` Piotr Górski
2021-09-19 11:36 ` Masahiro Yamada [this message]
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='CAK7LNATBvZBmuznFaFQgZeOO_F_UsisPYBobDC7LYDMVW3Yd=w@mail.gmail.com' \
--to=masahiroy@kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lucjan.lucjanov@gmail.com \
--cc=michal.lkml@markovi.net \
--cc=ndesaulniers@google.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.