From: Nick Terrell <nickrterrell@gmail.com>
To: Nick Terrell <terrelln@fb.com>
Cc: linux-kernel@vger.kernel.org, Chris Mason <clm@fb.com>,
linux-kbuild@vger.kernel.org, x86@kernel.org,
gregkh@linuxfoundation.org, Petr Malat <oss@malat.biz>,
Kees Cook <keescook@chromium.org>,
Kernel Team <Kernel-team@fb.com>,
Nick Terrell <nickrterrell@gmail.com>,
Adam Borowski <kilobyte@angband.pl>,
Patrick Williams <patrickw3@fb.com>,
rmikey@fb.com, mingo@kernel.org,
Patrick Williams <patrick@stwcx.xyz>
Subject: [PATCH v3 5/8] usr: add support for zstd compressed initramfs
Date: Wed, 25 Mar 2020 12:58:46 -0700 [thread overview]
Message-ID: <20200325195849.407900-6-nickrterrell@gmail.com> (raw)
In-Reply-To: <20200325195849.407900-1-nickrterrell@gmail.com>
From: Nick Terrell <terrelln@fb.com>
* Add support for a zstd compressed initramfs.
* Add compression for compressing built-in initramfs with zstd.
I have tested this patch by boot testing with buildroot and QEMU.
Specifically, I booted the kernel with both a zstd and gzip compressed
initramfs, both built into the kernel and separate. I ensured that the
correct compression algorithm was used. I tested on arm, aarch64, i386,
and x86_64.
This patch has been tested in production on aarch64 and x86_64 devices.
Additionally, I have performance measurements from internal use in
production. On an aarch64 device we saw 19 second boot time improvement
from switching from lzma to zstd (27 seconds to 8 seconds). On an x86_64
device we saw a 9 second boot time reduction from switching from xz to
zstd.
Signed-off-by: Nick Terrell <terrelln@fb.com>
---
usr/Kconfig | 20 ++++++++++++++++++++
usr/Makefile | 1 +
2 files changed, 21 insertions(+)
diff --git a/usr/Kconfig b/usr/Kconfig
index bdf5bbd40727..43aca37d09b5 100644
--- a/usr/Kconfig
+++ b/usr/Kconfig
@@ -100,6 +100,15 @@ config RD_LZ4
Support loading of a LZ4 encoded initial ramdisk or cpio buffer
If unsure, say N.
+config RD_ZSTD
+ bool "Support initial ramdisk/ramfs compressed using ZSTD"
+ default y
+ depends on BLK_DEV_INITRD
+ select DECOMPRESS_ZSTD
+ help
+ Support loading of a ZSTD encoded initial ramdisk or cpio buffer.
+ If unsure, say N.
+
choice
prompt "Built-in initramfs compression mode"
depends on INITRAMFS_SOURCE != ""
@@ -207,4 +216,15 @@ config INITRAMFS_COMPRESSION_LZ4
If you choose this, keep in mind that most distros don't provide lz4
by default which could cause a build failure.
+config INITRAMFS_COMPRESSION_ZSTD
+ bool "ZSTD"
+ depends on RD_ZSTD
+ help
+ ZSTD is a compression algorithm targeting intermediate compression
+ with fast decompression speed. It will compress better than GZIP and
+ decompress around the same speed as LZO, but slower than LZ4.
+
+ If you choose this, keep in mind that you may need to install the zstd
+ tool to be able to compress the initram.
+
endchoice
diff --git a/usr/Makefile b/usr/Makefile
index c12e6b15ce72..b1a81a40eab1 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -15,6 +15,7 @@ compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma
compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4
+compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD) := zstd
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
--
2.25.1
next prev parent reply other threads:[~2020-03-25 19:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-25 19:58 [PATCH v3 0/8] Add support for ZSTD-compressed kernel and initramfs Nick Terrell
2020-03-25 19:58 ` [PATCH v3 1/8] lib: prepare zstd for preboot environment Nick Terrell
2020-03-26 15:40 ` Petr Malat
2020-03-26 18:50 ` Nick Terrell
2020-03-25 19:58 ` [PATCH v3 2/8] lib: prepare xxhash " Nick Terrell
2020-03-25 19:58 ` [PATCH v3 3/8] lib: add zstd support to decompress Nick Terrell
2020-03-26 16:47 ` Petr Malat
2020-03-26 19:03 ` Nick Terrell
2020-03-26 20:16 ` Petr Malat
2020-03-26 21:13 ` Nick Terrell
2020-03-26 21:44 ` Petr Malat
2020-03-26 21:58 ` Nick Terrell
2020-04-01 2:46 ` Nick Terrell
2020-03-25 19:58 ` [PATCH v3 4/8] init: add support for zstd compressed kernel Nick Terrell
2020-03-25 19:58 ` Nick Terrell [this message]
2020-03-25 19:58 ` [PATCH v3 6/8] x86: bump ZO_z_extra_bytes margin for zstd Nick Terrell
2020-03-25 19:58 ` [PATCH v3 7/8] x86: Add support for ZSTD compressed kernel Nick Terrell
2020-03-25 19:58 ` [PATCH v3 8/8] .gitignore: add ZSTD-compressed files Nick Terrell
2020-03-25 20:10 ` [PATCH v3 0/8] Add support for ZSTD-compressed kernel and initramfs Kees Cook
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=20200325195849.407900-6-nickrterrell@gmail.com \
--to=nickrterrell@gmail.com \
--cc=Kernel-team@fb.com \
--cc=clm@fb.com \
--cc=gregkh@linuxfoundation.org \
--cc=keescook@chromium.org \
--cc=kilobyte@angband.pl \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=oss@malat.biz \
--cc=patrick@stwcx.xyz \
--cc=patrickw3@fb.com \
--cc=rmikey@fb.com \
--cc=terrelln@fb.com \
--cc=x86@kernel.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;
as well as URLs for NNTP newsgroup(s).