From: Nikhil V <quic_nprakash@quicinc.com>
To: Pavel Machek <pavel@ucw.cz>, Len Brown <len.brown@intel.com>,
"Rafael J. Wysocki" <rafael@kernel.org>
Cc: Nikhil V <quic_nprakash@quicinc.com>,
Jonathan Corbet <corbet@lwn.net>,
Catalin Marinas <catalin.marinas@arm.com>,
Randy Dunlap <rdunlap@infradead.org>,
Peter Zijlstra <peterz@infradead.org>,
"Steven Rostedt (Google)" <rostedt@goodmis.org>,
"Paul E. McKenney" <paulmck@kernel.org>,
Tejun Heo <tj@kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-doc@vger.kernel.org>, <linux-pm@vger.kernel.org>,
<quic_pkondeti@quicinc.com>, <quic_kprasan@quicinc.com>,
<quic_mpilaniy@quicinc.com>, <quic_shrekk@quicinc.com>,
<mpleshivenkov@google.com>, <ericyin@google.com>
Subject: [RFC PATCH 0/4] PM: hibernate: LZ4 compression support
Date: Tue, 26 Sep 2023 14:27:10 +0530 [thread overview]
Message-ID: <cover.1695711299.git.quic_nprakash@quicinc.com> (raw)
This patch series covers the following:
1. Renaming lzo* to generic names, except for lzo_xxx() APIs. This is
used in the next patch where we move to crypto based APIs for
compression. There are no functional changes introduced by this
approach.
2. Replace LZO library calls with crypto generic APIs
Currently for hibernation, LZO is the only compression algorithm
available and uses the existing LZO library calls. However, there
is no flexibility to switch to other algorithms which provides better
results. The main idea is that different compression algorithms have
different characteristics and hibernation may benefit when it uses
alternate algorithms.
By moving to crypto based APIs, it lays a foundation to use other
compression algorithms for hibernation.
3. LZ4 compression
Extend the support for LZ4 compression to be used with hibernation.
The main idea is that different compression algorithms
have different characteristics and hibernation may benefit when it uses
any of these algorithms: a default algorithm, having higher
compression rate but is slower(compression/decompression) and a
secondary algorithm, that is faster(compression/decompression) but has
lower compression rate.
LZ4 algorithm has better decompression speeds over LZO. This reduces
the hibernation image restore time.
As per test results:
LZO LZ4
Size before Compression(bytes) 682696704 682393600
Size after Compression(bytes) 146502402 155993547
Decompression Rate 335.02 MB/s 501.05 MB/s
Restore time 4.4s 3.8s
LZO is the default compression algorithm used for hibernation. Enable
CONFIG_HIBERNATION_DEF_COMP_LZ4 to set the default compressor as LZ4.
Compression Benchmarks: https://github.com/lz4/lz4
4. Support to select compression algorithm
Currently the default compression algorithm is selected based on Kconfig.
Introduce a kernel command line parameter "hib_compression" to
override this behaviour.
Users can set "hib_compression" command line parameter to specify
the algorithm.
Usage:
LZO: hib_compression=lzo
LZ4: hib_compression=lz4
LZO is the default compression algorithm used with hibernation.
Nikhil V (4):
PM: hibernate: Rename lzo* to make it generic
PM: hibernate: Move to crypto APIs for LZO compression
PM: hibernate: Add support for LZ4 compression for hibernation
PM: hibernate: Support to select compression algorithm
.../admin-guide/kernel-parameters.txt | 6 +
kernel/power/Kconfig | 25 ++-
kernel/power/hibernate.c | 83 +++++++-
kernel/power/power.h | 19 ++
kernel/power/swap.c | 189 +++++++++++-------
5 files changed, 248 insertions(+), 74 deletions(-)
--
2.17.1
next reply other threads:[~2023-09-26 8:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-26 8:57 Nikhil V [this message]
2023-09-26 8:57 ` [RFC PATCH 1/4] PM: hibernate: Rename lzo* to make it generic Nikhil V
2023-09-26 8:57 ` [RFC PATCH 2/4] PM: hibernate: Move to crypto APIs for LZO compression Nikhil V
2023-09-26 8:57 ` [RFC PATCH 3/4] PM: hibernate: Add support for LZ4 compression for hibernation Nikhil V
2023-09-26 8:57 ` [RFC PATCH 4/4] PM: hibernate: Support to select compression algorithm Nikhil V
2023-10-03 8:19 ` Pavan Kondeti
2023-10-03 8:05 ` [RFC PATCH 0/4] PM: hibernate: LZ4 compression support Nikhil V
2023-10-03 8:09 ` Pavan Kondeti
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=cover.1695711299.git.quic_nprakash@quicinc.com \
--to=quic_nprakash@quicinc.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=ericyin@google.com \
--cc=len.brown@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mpleshivenkov@google.com \
--cc=paulmck@kernel.org \
--cc=pavel@ucw.cz \
--cc=peterz@infradead.org \
--cc=quic_kprasan@quicinc.com \
--cc=quic_mpilaniy@quicinc.com \
--cc=quic_pkondeti@quicinc.com \
--cc=quic_shrekk@quicinc.com \
--cc=rafael@kernel.org \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tj@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).