[PATCH 0/6] Squashfs performance improvements

From: Phillip Lougher
Date: Thu Nov 07 2013 - 15:25:08 EST


Hi

This patch-set is mainly a compilation of the various Squashfs
performance improvement patches sent to the mailing list over the
last month or so. These patches do the following:

* Add support for different decompressor implementations
* Add support for parallel decompression, with or without
percpu variables
* Add support for direct decompression into the page cache,
rather than using an intermediate buffer.

Patches 1, 4 and 6 are revised V2 versions following review.

Patch 2 is Minchan Kim's multi-threading patch unmodified, it is
included here for completeness.

Patch 3 is new, it is a multi-threaded implementation which uses
percpu variables to do load-balancing across multiple cores, providing
one decompressor per core. This implementation is intended to be
complementary to Minchan Kim's patch.

Each parallelisation implementation exhibits trade-offs between
decompression performance and CPU and memory usage. The
multi-threading implementation without percpu variables offers
the ability to do two simultaneous decompressions per core, which
offers maximum performance but at the expense of very high CPU usage
and memory overhead. For many multi-core embedded systems with
weak CPUs such resource use may be prohibitive.

The percpu implementation inherently limits CPU usage to one decompression
per core, and because of the use of percpu variables it ensures
decompression is load balanced too.

----------------------------------------------------------------
Minchan Kim (1):
Squashfs: enhance parallel I/O

Phillip Lougher (5):
Squashfs: Refactor decompressor interface and code (V2)
Squashfs: add multi-threaded decompression using percpu variables
Squashfs: Generalise paging handling in the decompressors (V2)
Squashfs: restructure squashfs_readpage()
Squashfs: Directly decompress into the page cache for file data (V2)

fs/squashfs/Kconfig | 72 +++++++++++
fs/squashfs/Makefile | 5 +
fs/squashfs/block.c | 36 +++---
fs/squashfs/cache.c | 28 ++++-
fs/squashfs/decompressor.c | 59 ++++++---
fs/squashfs/decompressor.h | 24 ++--
fs/squashfs/decompressor_multi.c | 199 +++++++++++++++++++++++++++++++
fs/squashfs/decompressor_multi_percpu.c | 104 ++++++++++++++++
fs/squashfs/decompressor_single.c | 85 +++++++++++++
fs/squashfs/file.c | 142 +++++++++++-----------
fs/squashfs/file_cache.c | 38 ++++++
fs/squashfs/file_direct.c | 178 +++++++++++++++++++++++++++
fs/squashfs/lzo_wrapper.c | 47 ++++----
fs/squashfs/page_actor.c | 104 ++++++++++++++++
fs/squashfs/page_actor.h | 86 +++++++++++++
fs/squashfs/squashfs.h | 20 +++-
fs/squashfs/squashfs_fs_sb.h | 4 +-
fs/squashfs/super.c | 10 +-
fs/squashfs/xz_wrapper.c | 105 +++++++++-------
fs/squashfs/zlib_wrapper.c | 64 ++++------
20 files changed, 1167 insertions(+), 243 deletions(-)
create mode 100644 fs/squashfs/decompressor_multi.c
create mode 100644 fs/squashfs/decompressor_multi_percpu.c
create mode 100644 fs/squashfs/decompressor_single.c
create mode 100644 fs/squashfs/file_cache.c
create mode 100644 fs/squashfs/file_direct.c
create mode 100644 fs/squashfs/page_actor.c
create mode 100644 fs/squashfs/page_actor.h

Phillip
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/