From: Tom Marshall <tom@cyngn.com>
To: Theodore Ts'o <tytso@mit.edu>
Cc: linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Richard Weinberger <richard.weinberger@gmail.com>
Subject: Re: [RFC] Per-file compression
Date: Sun, 19 Apr 2015 14:15:01 -0700 [thread overview]
Message-ID: <55341ad8.c7bb420a.053f.ffffeff5@mx.google.com> (raw)
On Apr 18, 2015 4:09 PM, Theodore Ts'o <tytso@mit.edu> wrote:
>
> On Sat, Apr 18, 2015 at 10:06:14AM +0200, Richard Weinberger wrote:
> > On Sat, Apr 18, 2015 at 12:20 AM, Tom Marshall <tom@cyngn.com> wrote:
> > > We are running into space issues when upgrading Android devices to the
> > > latest version. This issue is particularly troublesome for 64-bit devices
> > > that initially shipped without 64-bit support, as the multi-lib files nearly
> > > double the space requirements. As it happens, many system files are quite
> > > compressible -- namely shared libs and apk files. So implementing
> > > filesystem compression is a natural solution.
>
> Tom, have you verified whether or not this approach actually is
> sufficient to address the problem you are trying to solve?
> Specifically, (a) can you get enough space compression that it will
> make things fit? Given that apk files are already compressed using
> zip, I'm a bit surprised you would get enough of a compression savings
> that it's going to allow to make things fit.
Yes it works surprisingly well. Both .so files and .apk files compress by roughly 40%. I'm also a bit surprised at the .apk results, but it works great.
> And secondly (b) after
> you decompress the shared libraries, is there enough memory that the
> resulting system functions well.
Yes, on our particular device, it actually performs at least as well as before, possibly better. I haven't done an extensive survey of memory usage though.
The majority of compression comes from .so and .apk files. Shared libs are typically mmap'd and most of the contents accessed. apk files are not referenced much after initial dexopt.
> Often times these older Android
> devices don't have a huge amount of memory, and so either with or
> without the overhead of needing to decompress the entire file (which
> can be solved with chunking, although this tends to reduce the
> compression efficiency), is the system going to function well using
> 64-bit binaries that take up a lot more room than the older 32-bit
> binaries?
Our test device is not so much an older device, just a mid-range device (msm8916). It has mediocre emmc speed and decent CPU (though thermal throttling is pretty aggressive).
>
> > > So, I wrote a thing called 'zfile' that hooks into the VFS layer and
> > > intercepts file_operations to do file (de)compression on the fly. When a
> > > file is opened, it reads and decompresses the data into memory. The file
> > > may be read, written, and mmaped in the usual way. If the contents are
> > > changed, the data is compressed and written back.
>
> Do you really need to be able to rewrite the files? Life gets much
> easier if you can assume that the compressed files are read-only;
> especially once you start trying to use chunking, it *definitely*
> becomes easier if you don't need to support modifying the compressed
> files. And in the case of the system partition, this might be a safe
> assumption,yes?
You are correct. Writing is not really a requirement for us, just nice to have.
next reply other threads:[~2015-04-19 21:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-19 21:15 Tom Marshall [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-04-21 3:29 [RFC] Per-file compression Tom Marshall
2015-04-17 22:20 Tom Marshall
2015-04-18 8:06 ` Richard Weinberger
2015-04-18 23:09 ` Theodore Ts'o
2015-04-20 3:00 ` Alex Elsayed
2015-04-18 11:41 ` Richard Weinberger
2015-04-18 14:58 ` Tom Marshall
2015-04-18 15:07 ` Richard Weinberger
2015-04-18 15:48 ` Tom Marshall
2015-04-18 15:52 ` Richard Weinberger
2015-04-20 14:53 ` Tyler Hicks
2015-04-20 16:51 ` Richard Weinberger
2015-04-21 15:18 ` Theodore Ts'o
2015-04-21 15:37 ` Jeff Moyer
2015-04-21 16:54 ` Theodore Ts'o
2015-04-29 23:15 ` Tom Marshall
2015-05-01 18:09 ` Steve French
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=55341ad8.c7bb420a.053f.ffffeff5@mx.google.com \
--to=tom@cyngn.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=richard.weinberger@gmail.com \
--cc=tytso@mit.edu \
/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.